ALL EXCEL Program Tips VBA

【EXCEL】VBA-IE制御でWebページからのメッセージのOKを押す方法【JavaScriptを使う】

はじめに

EXCEL VBAでIE(InternetExploer)を制御する方法について触れようと思います。

過去にも 同作業についてTIPS形式で紹介した記事がありますが、
今回は、JavaScriptを利用した別アプローチについて触れようと思います。

過去記事

本過去記事では結構シンプルに Webからのメッセージ をクリックするコードを紹介しています。

 

 

本記事でできること

本記事では以下のことができます。

出来ること

①EXCEL-VBAにおけるDOM(Document Object Model)でのブラウザ制御で、
 WebからのメッセージOKボタンをクリックすることができます。

②EXCEL-VBA上でJavaScriptを利用し、上記①実現します。

③JavaScriptのおかげでEXCEL側の制御を保ったまま上記①実現できます。

 

Webページからのメッセージとは?

Webページからのメッセージとは、システムウィンドウです。

↑こんなウィンドウです。

初めてDOM制御する際は、このウィンドウの存在で自動化の妨げになった人も多いのではないでしょうか。

こいつのやっかいなのは、実行中のVBA制御がシステムウィンドウに持っていかれることがあり
VBA側に制御が返ってこないことから VBAが止まった状態になる、という点です。

 

VBA上でJavaScriptを使う優位性

VBAのClickメソッド等で システムウィンドウを出現させると、システムウィンドウに制御がもっていかれます

イメージとしては こんな感じです。

それを回避するために、Javascriptシステムウィンドウを出現させるようにします。

こうすることで、VBAに制御が残ったまま、システムウィンドウに対してアプローチを行うことが出来ます
(やろうと思えば、Javascriptで システムウィンドウ出現→OKで完結できそうですが)

何をいってるの?という人向けに図を用意しました。(ざっくりですが)
見てもピンとこなければ、スキップして問題有りません。

 
 

コードの紹介

コードの紹介をします。各コードの解説はインラインコメントに記載しております。

 

コードの解説

途中のコードは省きましたが、
システムダイアログのウィンドウをWebブラウザ制御(IEブラウザ制御)で出現させるタイミングで
↑のコードを元に試してみましょう。

この際の注意点ですが、
Sub〜EndSubの本番プログラムの手前に、システム制御を行うためのプログラムを記載しておく準備が必要です。

 

Private Declare Function で
事前に宣言していたシステム制御プログラムは、Sub〜EndSub内で使用可能となります。
実際に、Webブラウザ制御で、システムダイアログが発生したら、以下のコードを記載しましょう。
(Dim の変数部分は 必要に応じて削除や変更してください)

 

オブジェクト変数 ojtIE で IEブラウザを制御している前提でのコードとなるため、注意してくださいね。

過去記事

オブジェクト変数にIEブラウザを格納する方法が分からない人は、こちらの過去記事を参照ください。

オブジェクト変数自体を知らない人は、こちらの過去記事を参照ください。

 
 

終わりに(編集後記)

ここまでお読みいただいてありがとうございます。

VBAのDOM操作は、意外とニッチな分野ですので、記事を通じてとはなりますが、
読者の皆様と繋がることが出来て 結構ハッピーだったりします。

筆者は Twitterも行っているため、フォローしてくれると嬉しいです。(更新頻度が かなり低いですが。)
たまに、VBAとかDOMの有益な情報が…発信できたら良いな、と思ったまま、あまり活用できてませんが。

Twitterアカウントは 「nkmr_dai」となります。
↓のボタンからもフォローできます。

 

ちょっとだけ宣伝となりますが、
もしプログラミングの学習方法に悩みをお持ちの方がいましたら、
別記事で 学習方法を紹介していますのでご覧になってください。

 
 

今回はここまでとなります。

末筆とはなりますが、ここまでの長文を読んでいただきありがとうございました。

細々とはなりますが、引き続き ブログ更新していきますので、
引き続き NakamuraBlog(ナカログ)をよろしくお願いいたします。

でわでわ。




-ALL, EXCEL, Program, Tips, VBA
-, ,