VBA開発

VBAでIE操作「Internet Explorerを最前面に表示」する

Internet Explorerを最前面に表示させたい

Excel VBAマクロでIE操作していて最前面に表示させたいケースがあります。

■最前面に表示させたいケース
・IEの画面が自動的に動いているのをユーザーに確認させたい。
・ウェブページのテキストボックス等に文字を反映させたい。(SendKey)

Internet Explorerを最前面に表示する方法

#If Win64 Then
    Public Declare PtrSafe Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) As Long
#Else
    Public Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) As Long
#End If
’■Internet Explorerを最前面に表示する
Public Sub call_sample_SetForegroundWindow()

    Set objIE = CreateObject("InternetExplorer.Application")
    
    '■Internet Explorerの画面を表示する(可視化する)
    objIE.Visible = True
    '■目的のサイトに移動する
    objIE.navigate ("https://vba-create.jp/")
    Call Call_IE_WaitTime
    
    objIE.Visible = True
    
    '■IEを最前面に表示する
    SetForegroundWindow (objIE.hWnd)
End Sub

注意点

  • 事前にこちらの参照設定が必要です。
  • このコードだけでは動きません。ページ読み込み後は読み込み待ち処理(Call_IE_WaitTime)が必要です。
  • 最前面に表示したい場合はSendKeyを使って、キーボード操作をIEに反映だと思いますが、SendKey操作は多用すべきではありません。

SendKeyを多用すべきでない理由

キー操作を反映するにはSendKey操作は簡単でいいのですが、IE操作が安定しません。
(入力したいタイミングで反映できなかったり、そもそも入力を受け付けてくれない等)

ウェブページを解析して、直接VBAからIEを動かすべきです。

 

その他

Internet Explorerを使用して、Webスクレイピングは敷居が高い風に捉えられますが、
上記のように、パーツ化して組み合わせ処理するだけです。

Web上のデータを触りたい要望は会社様でも個人様でも多いと思います。
VBA IE操作を覚えて効率化しませんか?
作成が大変であれば弊社で代行開発も可能です。お気軽にお問い合わせください。

 

コメント

タイトルとURLをコピーしました