プロが教えるわが家の防犯対策術!

VBAからIEを起動していますが、IEの起動後、IEにフォーカスを移したいのですが、どうやればいいのでしょうか?


よろしく願いします。

A 回答 (5件)

こんばんは。

KenKen_SP です。

> フォーカスが移った時点でIEのテキストボックスを埋めようと...

IE のテキストボックスにデータを流し込むなら、特にフォーカスを得なくても
可能だと思いますよ。例えば、テキストボックスなら INPUT タグですから、

  For Each f In IE.Document.all.tags("input")
    ' TEXTBOX
    If LCase(f.Type) = "text" then 
      Debug.Print f.Name
    End If
  Next f

みたいな感じで列挙できます。あとは HTML ソースの name 属性を見て、
代入の判定をすれば良いかと。例えば、郵便番号なら大抵 zip とか postal
なんて名前がついてますから、

  For Each f In IE.Document.all.tags("input")
    Select Case LCase(f.Type)
      Case Is = "text"
        If f.Name Like "*zip*" or f.Name Like "*postal*" then
          f.Value = "123-4567"
        End If
      Case Is = "radio"
      Case Is = "checkbox"
    End If
  Next f

このような感じで。

最初から テキストボックスの name 属性が分かっている場合は決め打ちで、

  IE.Document.all.getElementsByName("zip").Value = "123-4567"

とできます。

ご質問の意図から外れていたら、ごめんなさい。それから、上記コードは
直接入力したものですから、エラーがあった場合も、済みません。

この回答への補足

結局、name が設定されているので、
  IE.Document.all.getElementsByName("zip").Value = "123-4567" のスタイルで落ち着きました。

ありがとうございました。

また、よろしくお願いします。

補足日時:2006/06/19 00:18
    • good
    • 0

んーー、、で結局 IE にフォーカスを移す目的は何なんですか?

この回答への補足

すみません、結局、戻さなくてよいことがわかりました。w

補足日時:2006/06/20 00:46
    • good
    • 0

レスが無いとこ見ると、#2 は外していたのでしょうか?



> 開いているIEがあれば、そのIEをmyIEに代入し...

知りたいのは、既に起動済みの IE をアクティブにする方法ですか?
または Shell で起動した IE ?

この回答への補足

ありがとうございます。フォーカスを移すという点ではOKでした。ただ、コレも、私の説明不足でしたが、フォーカスが移った時点でIEのテキストボックスを埋めようと、Stopを入れていたのですが、そのStopでVBAにまたフォーカスが戻ってきてしまって。。。w


それで、、、、なんだかんだ考えていて遅くなりました。すみません。。<m(__)m>


で、最終的に、

Textbox=Inputbox(xxx,xxx,xx)でいけるかナット、そんな感じに動いています。

以上、報告させていただきます。

補足日時:2006/06/18 22:58
    • good
    • 0

こんにちは。

KenKen_SP です。

いろいろ方法はあります。IE オブジェクトを作って起動した場合、ウインドウ
ハンドルもタイトルも容易に取得できます。

確実なのは、ウインドウハンドルを使ってアクティブにする方法です。

Private Declare Function SetForegroundWindow Lib "user32.dll" ( _
  ByVal hWnd As Long _
) As Long

Sub Sample

  Dim IE As Object

  Set IE = CreateObject("InternetExplorer.Application")
  IE.Visible = True
  '(処理)
  SetForegroundWindow(IE.HWND) '<-- アクティブに

  Set IE = Nothing

End Sub
    • good
    • 0

どのようにしてIEを起動しているのかわからないのですが、AppActivate ステートメントを利用すれば出来るかと思います。

この回答への補足

こんにちは。そうでしたね、すみません。

myIEを宣言して・・・

開いているIEがあれば、そのIEをmyIEに代入し、開いているIE
がなければあらたに作成するという方法を採っています。

Set myIE = CreateObject("InternetExplorer.application")

補足日時:2006/06/18 10:50
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!