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択だと思います。

リンク

 

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の体裁・仕様が買わなければメンテの頻度も低くて済みます。

 

デメリットとしては、getElementByIdなど特定の入力BOX・ボタンを指定できないため、Tabキー・Shiftキー・Enterキーを組み合わせてボタンを押すことになり、VBAを実行している間何もできない状態になります。

さらに、画面描画遅延でタブオーダーのタイミングがずれた場合、作業の精度が下がることがあります。

この点を理解し操作すれば特に問題ありません。実際、ぼくの勤務先でも日々業務で使っています。

 

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

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

 


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

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

kanade

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

-Excel
-,

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