2021/7/6更新
※IEはサポートが終了し今後外部操作が出来なくなる可能性があります。
新しい方法でブラウザ操作を行いましょう⇒seleniumとchromeを使ってVBAからブラウザ操作
エクセルVBAでIE(Internet Explorer)ブラウザを操作する方法を紹介します。
まずはエクセルの設定
IEを操作する上でエクセルのライブラリ参照設定を行います。
VBA設定画面から設定を行いますが、メニューに「開発」がない場合は追加をしておきましょう。
「ファイル」→「オプション」→「リボンのユーザー設定」から「開発」を表示に追加します。
次に「開発」→「Visual Basic」を開きます。
VBA画面からメニューの「ツール」→「参照設定」で設定画面を開きます。
Microsoft HTML Object Library Microsoft Internet Controls
上記の二つにチェックを入れてください。
これで下準備は完了です。
VBAコードでIEを起動
まずはIEを開くコードです。
Sub IE_Control() 'IEのオブジェクト変数定義 Dim objectIE As InternetExplorer 'IEを開く Set objectIE = New InternetExplorer '画面に表示する objectIE.Visible = True '<…処理…> End Sub
上記を標準モジュールに書いて再生してみましょう。
IEが開くはずです。
また下記を追加すると開いたIEを閉じることができます。
'IEを閉じる objectIE.Quit
処理の後に記入しておきましょう。
URLを開く
今度は開いたIEで指定のURLを開いてみましょう。
開くコードは
objectIE.navigate URL
でサイトを開くことができます。
これを上記のコードに組み込んでみましょう。
また、URLを開いた後にレスポンスが正常に帰ってくるまで待つ処理も入れておきましょう。
ただ、sleep処理が必要になりますのでライブラリを読み込んでおきましょう。
'sleepを使うための設定 #If VBA7 Then Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr) #Else Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long) #End If 'IE操作 Sub IE_Control() '変数定義---------------------------------- 'IEのオブジェクト変数定義 Dim objectIE As InternetExplorer 'URLを設定 Dim targetURL: targetURL = "https://google.com/" 'IEオブジェクトの状態ステータス Const HT_READYSTATE_COMPLETE As Integer = 4 '変数定義---------------------------------- 'IEを開く Set objectIE = New InternetExplorer '画面に表示する objectIE.Visible = True 'URLを開く objectIE.Navigate targetURL '読み込みが完了したかを確認する Do While objectIE.Busy Or objectIE.ReadyState <> HT_READYSTATE_COMPLETE Sleep 2000 DoEvents Loop 'IEを閉じる objectIE.Quit End Sub
これでVBAからIEを操作できるようになります。
開いたサイトで、HTMLを取得したり、フォームに入力をしたりと様々なことができます。
コメント