- ベストアンサー
JavaScriptからVBAの関数を呼び出し
Accessのフォームに 、WebBrowserコントロールを貼り付けて、 JavaScript が記述されている、HTML を表示させているのですが、 その HTML内の JavaScriptから、Access VBAの関数を呼び出したり、 イベントを発生させることは、可能でしょうか? 以上、宜しくお願い致します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
隠しボタン経由でVBA側にイベントを発生させるとか。 http://www.gizcollabo.jp/vbtomo/log/archive/vbqanda2_403_2.html
お礼
ありがとうございました。 教えて頂いたサイトを参考に、テストプログラムを組んでみたら、うまく動作しました。 ---------------------------------------- アクセスで新規フォームを作る。 「Microsoft HTML Object Library」を参照設定。 WebBrowserコントロールを貼り付けて、以下のプログラムを貼り付け。 アクセスのフォームのプログラム ---------------------------------------- Option Compare Database Option Explicit Private WithEvents htmlCmd1 As MSHTML.HTMLInputButtonElement Private WithEvents htmlCmd2 As MSHTML.HTMLInputButtonElement Private Sub Form_Load() WebBrowser1.Navigate2 CurrentProject.Path + "\form.html" End Sub Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant) If URL = CurrentProject.Path + "\form.html" Then Set htmlCmd1 = WebBrowser1.Document.all.btn1 Set htmlCmd2 = WebBrowser1.Document.all.btn2 End If End Sub Private Function htmlCmd1_onclick() As Boolean MsgBox "test1が実行されました。" End Function Private Function htmlCmd2_onclick() As Boolean MsgBox "test2が実行されました。" End Function ---------------------------------------- form.htmlの中身 ---------------------------------------- <html> <head> <script type="text/javascript"> <!-- function test1(){ document.getElementById('btn1').click(); } function test2(){ document.getElementById('btn2').click(); } --> </script> </head> <body> フォームテスト</p></p> <!--確認処理開始用のボタン--> <input type="button" value="テスト開始1" onClick="test1()"> <input type="button" value="テスト開始2" onClick="test2()"> <!--ここからVBAのイベントを発生させる為の隠しボタン--> <input type="hidden" id="btn1" name="uid"> <input type="hidden" id="btn2" name="uid"> </body> </html> ----------------------------------------