Internet Explorerを最前面に表示させたい
Excel VBAマクロでIE操作していて最前面に表示させたいケースがあります。
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 '■IEを最前面に表示する SetForegroundWindow (objIE.hWnd) End Sub
注意点
- 事前にこちらの参照設定が必要です。
- このコードだけでは動きません。ページ読み込み後は読込待ち処理(Call_IE_WaitTime)が必要です。
- 最前面に表示したい場合はSendKeysを使って、キーボード操作をIEに反映だと思いますが、
SendKeys操作は多用すべきではありません。
SendKeysを多用すべきでない理由
キー操作を反映するにはSendKeys操作は簡単でいいのですが、IE操作が安定しません。
(入力したいタイミングで反映できなかったり、そもそも入力を受け付けてくれない等)
ウェブページを解析して、直接VBAからIEを動かすべきです。
コメント