VBAでIe操作したいのですが次のボタンをクリックしたい 削除
Message#2 2014年11月28日(金)06時27分 From: lbis |
下記の内容は条件が色々とあるので少々ややこしいと思います。 また, 「1つの出発点の例」や「叩き台の一種」だと思ってください。 まず, VBA を動作させるソフトは Excel であるものとします。 (Word や PowerPoint などでは下記 VBA は動作しません。) そして VBA を書く Excelファイル(ブック) は 任意のフォルダに保存してあるものとします。 また VBA を書いた Excelファイル(ブック) と同じフォルダに 「Test.html」というファイル名の HTML があり Excelファイル(ブック) を開いた状態で 「Test.html」を IE で開いて動作させるものとします。 その「Test.html」の内容(ソースコード)は 次のようになっているものとします。 <!DOCTYPE html> <html> <head> <meta charset="shift_jis"> <title>Test</title> <script type="text/javascript"> function carSelect(){ alert("画像がクリックされました"); } </script> </head> <body> <table cellspacing="0" cellpadding="0" border="1"> <tr> <td align="center" colspan="2" height="25"> <a href="javascript:carSelect();"> <img src="/m/images/btn_select_truck.gif" height="20" width="120" border="0" alt="お車を選択します"> </a> </td> </tr> </table> </body> </html> 上記のような状態を作成した場合の Excelファイル(ブック) の 標準モジュール に書く Subプロシージャ例です↓。 Sub IEを操作してJavaScriptの関数を実行() Set IE = CreateObject("InternetExplorer.Application") 'この URL↓ を変更する URL = ActiveWorkbook.Path & "\Test.html" IE.Navigate (URL) IE.Visible = True Do While IE.Busy Or IE.ReadyState <> 4 DoEvents Loop 'IE で開いたページの関数 carSelect を実行 IE.Document.parentWindow.execScript "carSelect()" Set IE = Nothing End Sub このようにしておいた状態で VBA を書いた Excelファイル(ブック) から 上記 Sub プロシージャを実行させると 「Test.html」が IE で開き そのページ内の JabaScript の関数 carSelect が実行されて 「画像がクリックされました」 というダイアログが表示されると思います。 ◎参考URL 「エクセルVBAマクロ - IEの操作 - スクリプトの実行」 http://www.excel-vba.net/excel-ie-007.html なお, ローカルにある上記のような JavaScript 入り HTML を IE で開くと, 「この Web ページはスクリプトや AactiveX コントロールを実行しないように制限されています。」 という警告が出ると思います。 この警告が出る場合, 上の VBA の実行は失敗します。 「この Web ページはスクリプトや AactiveX コントロールを実行しないように制限されています。」 という警告を出さないようにするには次のページを参考にして 一時的(この実験中のみ)にでも 「マイコンピューターのファイルでアクティブコンテンツの実行を許可する」 にチェックを入れてください。 「Windows8のIE10で「このwebページはスクリプトやactivexコントロールを実行しないように制限されています」を非表示にする - はぴらき合理化幻想」 http://hapilaki.hateblo.jp/entry/windows8-ie10-activex なお上記ページには 全 IE を全て閉じて再起動すると設定の変更が有効になるようなことが書いてありますが, 私の環境では PC の再起動をしなければ設定の変更が有効になりませんでした。 以上のようなことができるようになってから 実際のサイトなどで試してみたください。 (何らかの セキュリティ に阻まれるとうまく行かない可能性もあります。) |
上のメッセージを削除します。
よければパスワードを入力し、削除ボタンをクリックしてください。