【エクセルVBA】IEを操作する

スポンサーリンク
excelvba エクセル
スポンサーリンク

2021/7/6更新

※IEはサポートが終了し今後外部操作が出来なくなる可能性があります。

新しい方法でブラウザ操作を行いましょう⇒seleniumとchromeを使ってVBAからブラウザ操作

 

エクセルVBAでIE(Internet Explorer)ブラウザを操作する方法を紹介します。

スポンサーリンク

まずはエクセルの設定

IEを操作する上でエクセルのライブラリ参照設定を行います。

VBA設定画面から設定を行いますが、メニューに「開発」がない場合は追加をしておきましょう。

「ファイル」→「オプション」→「リボンのユーザー設定」から「開発」を表示に追加します。

リボンの設定

次に「開発」→「Visual Basic」を開きます。

VBA

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を取得したり、フォームに入力をしたりと様々なことができます。

 

コメント

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