Excel

ExcelのVBAからedgeブラウザを自動操作する3つの方法

Excel VBAからIEを自動操作できなくなって困っている方も増えてきているようですね。

今回はVBAからIEに代わるブラウザとしてedgeやchromeを自動操作する方法をご紹介します。

 

VBA+DOMを使う

DOM(Document Object Model)はIEの操作でも使われてきた技術であり、ウィンドウハンドルを掴まえてgetElementByIdでHTMLソースのIDを操作することができるもの。

普段からVBAの操作に慣れている人であれば実装は難しくなく、IE操作の代替案として利用可能でしょう。

とはいえ、従来のIE設定とやり方が違うこともあり、根気強くできる方・スキルに自信のある方にはお勧めできます。

 

こちらのブログに丁寧に書かれていましたので、ご紹介のみさせていただきます。

外部リンク

 

WebDriverを使う

Microsoftが公開しているWebDriverを利用することでEdgeの操作を自動化できます。

WebDriver自体はブラウザを操作するドライバでありインタフェースにすぎないため、別途SeleniumとPython、Java、C#、Ruby、JavaScriptなどの言語スキルが必要になります。

プログラムスキルが初級以上であれば、ライブラリが充実しているpythonでのコーディングをおすすめします。

 

ただし、ブラウザのバージョンに合ったWebDriverを適用する必要があるため以下の2択だと思います。

  • ブラウザのバージョンアップ毎に適合したWebDriverを充てる運用
  • 閉鎖的なネットワーク環境でのみ利用しブラウザをバージョンアップさせない

外部リンク

 

VBA標準のSendKeysステートメントを使う

VBAには標準で”SendKeysステートメント”というコマンドが用意されています。

要は、打鍵(キータイプ)のコードをVBAから送る技術ですね。

例えばEnterキーを押させたいのであれば「SendKeys "{ENTER}", True」をVBAで書くだけです。

 

まず、VBAからEdgeでgoogleを開きます。

 

Chromeを開きたい場合はパスを差し替えてください。

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"

 

SendKeysステートメントを利用しブラウザを操作

Edgeを起動しGoogleを開くと、検索ボックスにマウスカーソルが合わさった状態で開始されるため、検索したいワードを入力しEnterキーを送ってあげればググることもできます。

 

下記をそのままVBAにコピペし実行してみてください。

 

あとはマウスやキー操作をトレースし、どういった操作をしたいかを組み合わせることである程度の自動化はできます。

環境構築が不要ですぐに使えて、1つ1つの操作を追っていくだけなのでごく簡単な作業であればおすすめです。

Webの体裁・仕様が変わらなければメンテナンスもほぼ不要となります。

 

SendKeys ステートメントの詳細(他のキー)は下記リンクを参照してください。

https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/sendkeys-statement

 

VBAからブラウザ操作するデメリット

デメリットとしては、先述したDOMの様にgetElementByIdでHTMLのIDを取得できないためinputboxやbuttonを直接指定できません。

Tabキー・Shiftキー・Enterキーを組み合わせてボタンを押すことになり、VBAを実行している間ほかのPC操作が何もできない状態になります。

 

また、画面描画遅延でタブオーダーのタイミングがずれた場合、自動操作の精度が落ちます。

画面描画にかかる時間分スリープすれば良いので、ここはトライ&エラーでほぼ回避できます。

 

上記を理解しVBAで組み合わせ自動操作すれば特に問題ありません。

実際、ぼくも定常業務で使っており、日々1時間の時短になりました。

 


社畜系インフラエンジニアブログのTOPへ戻る

コメントもらえたら泣いて喜びます!
  • この記事を書いた人
  • 最新記事
生き残りたいインフラエンジニアのカナデ

kanade

IT関連の仕事に従事し気付けば10余年。好きな言葉は「よくわからないけど動いてる」です。どうにかして生き残りたいアラフォーのIT系エンジニア。

-Excel
-,

© 2022 インフラエンジニアブログカナデ