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を動かすべきです。



コメント