VBA開発

VBAでIE操作「VBAでJS(JavaScript)のonclickをクリックする」【エクセルマクロ】

前回id要素がなくても、for eachで要素をチェックしてクリックする動作をお伝えしました。
上記で約半数のWebページは対応ができます。
では、対応が出来ない残りの半数はなんでしょうか?JavaScriptを動作しているWebページです。

onclickは単純なクリックでは動かない

onclickはJavaScriptのイベントの一つです。「クリック」でイベントを発生させます。
その為、前回前々回のような単純にClickだけでは、
クリック処理は出来ても、JavaScriptが発火しない(イベントが発生しない)ため、
ページ遷移ができません。

HTML(Javascript)のサンプル

下記のサンプルをみて、
onclickをどのように処理をすればよいのか、理解してください。

id要素が存在する場合

id要素のクリックでOK。Javascriptは意識しなくてよい。

 
<a id="addressLinkA" href="javascript:void(0);" style="color: rgb(0, 0, 255);>
   参照
</a>

onclick要素が存在する場合

下記VBAコードサンプルのように、JavaScriptを動かす。

 
//HTMLサンプル
<a href="javascript:void(0)" onclick="submit(0, '/Info', { 'ID': '1', 'Address': '東京都中央区' }); return false;">
   詳細
</a>
   '■「onclick="」と「; return false」の間の文字を使用する。
   temp = submit(0, '/Info', { 'ID': '1', 'Address': '東京都中央区' });

   '■Javascript:の文言を足し、ページ遷移(Navigate)する
   objIE.Navigate "JavaScript:" & temp

注意点

・Googleで検索するとonclickについて紹介しているページで情報が古いものがあります。
それは「objIE.Document.Script.setTimeout」で処理をするというものです。

実行時エラー ‘-2147024891 (80070005)’:アクセスが拒否されました。」と
表示されるケースがあり、現状は使わない方が望ましいでしょう。

・onclick要素のみを抜き出す処理をパーツ化しています。参考にどうぞ。
VBAでIE操作「Javascriptのonclick要素を抜き出す」処理をパーツ化する

 

その他

Internet Explorerを使用して、Webスクレイピングは敷居が高い風に捉えられますが、
上記のように、パーツ化して組み合わせ処理するだけです。

Web上のデータを触りたい要望は会社様でも個人様でも多いと思います。
VBA IE操作を覚えて効率化しませんか?
作成が大変であれば弊社で代行開発も可能です。お気軽にお問い合わせください。

 

コメント

タイトルとURLをコピーしました