【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


Comments
  1. miz

    下記、管理者権限を有効で開くと、エラーにならないことが確認できました。

  2. miz

    マイクロソフトのHPは途中でリダイレクトが入るため、IEオブジェクトのリンクきれてエラーになるようです。

    https://tooljp.com/qa/What-to-do-if-Edge-starts-when-you-operate-IE-with-VBA-D82D.html

    リダイレクトにも対応いただけるとありがたいです。

  3. miz

    URLを ”https://www.microsoft.com”  にするとエラーになるのはなぜだかわかりますか?

  4. 匿名

    ありがとうございました

コメントを残す