【VBA】バッチ経由でブラウザを立ち上げる

たたかいのひぶた

この令和の時代にInternet Explorerでスクレイピングしてる奴いる!?いねぇよな!?

え…いる?…あ…はい…

かくいう私は最近まで使っていました。が、Microsoft様の気まぐれか職場の設定か分かりませんが、IEを立ち上げてもEdgeで立ち上がるようになってしまいました。(Edgeで「Internet Explorer に Microsoft Edge でサイトを開かせる」をOFFにしても変わらず。)

そんなわけで、バッチ起動⇒Chrome拡張機能でブラウザの自動化を試みることに。もはや何と戦っているんでしょうね。はい。

コード

' ブラウザを立ち上げる。
Public Sub LaunchBrowser()
  ' シェル関連
  Dim wsh As New IWshRuntimeLibrary.WshShell
  Dim result As WshExec
  
  ' クォーテーション
  Dim QUOT As String
  QUOT = Chr(34)

  ' コマンド
  Dim command As String
  Dim browserPath As String
  Dim url As String
  Dim param As String
  browserPath = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
  url = "https://tenki.jp/"
  param = "?param1=value1&param2=value2"
  ' ""(略)chrome.exe" "https://...?p=v""
  browserPath = QUOT & browserPath & QUOT
  url = QUOT & url & param & QUOT
  command = browserPath & " " & url
  command = QUOT & command & QUOT
  ' 実行
  Set result = wsh.Exec("%ComSpec% /c " & command)
  Set wsh = Nothing
End Sub

参照設定

  • Windows Script Host Object Model

ポイント

  • VBAで文字列としてのダブルクォーテーションは「”””」と書かなくてはならず混乱してしまうため変数(QUOT)にしておくと分かりやすい。
  • 全体の構成は「” “exeファイルのパス” “url?param””」である。
  • %ComSpec% /cはコマンドプロンプトの実行パスのようなもの。/cはcドライブを指すらしい。
  • 既にブラウザが開かれている場合は新しいタブとして追加される。

 

 

 

コメントを残す