【VBS】IEを操る方法
VBSってInternetExplorerを操る事が出来るんです。
うまく使用すればログイン画面とか自動でログインさせたりなど、面白いことが出来ます。
サンプルのコードをメモ帳に貼り付けて「.vbs」の拡張子で保存すれば簡単に実行されます。
IEを起動・終了させる
IEに特定のURLを指定して起動した後、終了させるだけです。IEの操作をするための基本。
Option Explicit use_ie ' IE用 Subプロシージャ Sub use_ie() Dim ie ' IE用変数 Set ie = CreateObject("InternetExplorer.Application") ' IE起動 ie.Navigate "https://www.google.co.jp" ' URL ie.Visible = True ' IEの可視化 waitIE ie ' IEの起動待機 ' 制御を破棄 ie.Quit ' IE終了 Set ie = Nothing ' 初期化 End Sub ' IEがビジー状態の間待ちます Sub waitIE(ie) Do While ie.Busy = True Or ie.readystate <> 4 WScript.Sleep 1000 Loop End Sub
項目の入力・ボタンのクリック・画面項目の取得
先ほどのIE起動VBSをすこし改変してGoogleで特定の値を検索して1件目のタイトルを出力するように変更致しました。ハイライトしている部分が変更箇所です。
Option Explicit use_ie ' IE用 Subプロシージャ Sub use_ie() Dim ie ' IE用変数 Set ie = CreateObject("InternetExplorer.Application") ' IE起動 ie.Navigate "https://www.google.co.jp" ' URL ie.Visible = True ' IEの可視化 waitIE ie ' IEの起動待機 ' キーワード入力 ie.Document.getElementById("lst-ib").Value = "ScrapEngineer" WScript.Sleep 1000 ' 検索ボタンクリック ie.Document.all("btnG").Click WScript.Sleep 3000 ' 1件目のリンク先名を取得 MsgBox ie.document.getElementsByClassName("r")(0).innerText waitIE ie ' 制御を破棄 ie.Quit ' IE終了 Set ie = Nothing ' 初期化 End Sub ' IEがビジー状態の間待ちます Sub waitIE(ie) Do While ie.Busy = True Or ie.readystate <> 4 WScript.Sleep 1000 Loop End Sub
これだけで簡単なマクロとなりますね。
これを自動で組めるようにしてしまえば、テスト画面表示→結果確認まで自動化出来そうですね。
ただし、VBSで色々操作出来るのはIEのみのようです。
Chromeなどは直接exeファイルを指定してURL起動までは可能でしたが、そこから操作することは出来なかったです・・・orz
«前の記事:開発時にはリリース後のことを考えようチャットワークのAPIを使ってみる:次の記事»
Comments
下記、管理者権限を有効で開くと、エラーにならないことが確認できました。
マイクロソフトのHPは途中でリダイレクトが入るため、IEオブジェクトのリンクきれてエラーになるようです。
https://tooljp.com/qa/What-to-do-if-Edge-starts-when-you-operate-IE-with-VBA-D82D.html
リダイレクトにも対応いただけるとありがたいです。
URLを ”https://www.microsoft.com” にするとエラーになるのはなぜだかわかりますか?
ありがとうございました