質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Internet Explorer 9

Windows Internet Explorer 9は2011年3月14日にリリースされたMicrosoftで開発されたウェブブラウザのことを指しますWindows Vista SP2以上, Windows Phone 7.1 / 8、Xbox360で使うことができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

34384閲覧

VBAでIEの確認ダイアログのボタンをクリックしたい

urakawa

総合スコア12

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Internet Explorer 9

Windows Internet Explorer 9は2011年3月14日にリリースされたMicrosoftで開発されたウェブブラウザのことを指しますWindows Vista SP2以上, Windows Phone 7.1 / 8、Xbox360で使うことができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

4クリップ

投稿2016/07/19 08:33

編集2016/07/20 09:38

動作環境:
OS: Windows7 32bit
開発環境: Access2010 VBA
操作対象:IE9

いつもお世話になっております。

IEにて、コマンドボタンクリック後に、
処理を実行して良いのか確認するダイアログが表示されるサイトがありまして、
確認ダイアログのOKボタンを押せずに困っております。

動作イメージとしましては、このサイトでOKボタンを押して、その後のダイアログのOKボタンを押したいです。
http://kamicha1.web.fc2.com/Excel/Test20090726.html

このサイトでは、OKボタンにID名が設定されていますが、
実際に押したいサイトでは、ID名が設定されていません。

サンプルサイトのHTMLが<変更後>のパターンの場合には、
どのように指定すると「.click()」を実行できますか?

<変更前>
<input type="submit"value="OK"class="bt2"id="popOK"onclick="return pdf();">
<変更後>
<input type="button"value="OK"name="popOK"onclick="return pdf();">

このサイトに対応するサンプルプログラムは以下のようになっています。
(このプログラムを起動すると、IEでOKボタン、確認ダイアログのOKボタンが押されてPDFが表示されます。)


【サンプルコード】

Private Declare PtrSafe Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As LongPtr, ByVal wMsg As Long, ByVal wParam As LongPtr, ByVal lParam As LongPtr) As Long Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private Declare Function FindWindow Lib "User32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Const WM_COMMAND As Long = &H111& Sub ie_CommandStateChange() Dim hwnd As Long Dim ie As InternetExplorer Dim a As Long, b As Long Dim objtag As Object Dim i As Long Set ie = CreateObject("InternetExplorer.Application") ie.Visible = True ie.Navigate "http://kamicha1.web.fc2.com/Excel/Test20090726.html" Do While ie.Busy Or ie.ReadyState < 4 DoEvents Loop Set objtag = ie.Document.getElementsByTagName("INPUT") For i = 0 To objtag.Length - 1 If objtag(i).Value = "OK" Then ie.Document.Script.setTimeout "javascript:document.getElementById('popOK').click()", 200 Sleep 1000 hwnd = FindWindow("#32770", "Web ページからのメッセージ") If hwnd <> 0 Then Debug.Print hwnd, ie.hwnd PostMessage hwnd, WM_COMMAND, vbOK, 0 End If Exit For End If Next i End Sub

【サンプルサイトのHTML】

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=Shift_JIS"> <meta http-equiv="content-style-type" content="text/css"> <meta http-equiv="content-script-type" content="text/javascript"> <script language="JavaScript"><!-- //PDF表示確認POPUP function pdf(url) { a=confirm('PDFを表示します。'); if(a) location.href='a.pdf'; else alert('なにもしません'); } // --></script> <title>VBA</title> </head> <body> <!--表示ボタン--><table border="0"width="100%"class="popBtn"><tr><td align="center"><input type="submit"value="OK"class="bt2"id="popOK"onclick="return pdf ();"></td></tr></table> <!--表示ボタン--><input type="hidden"name="analysisPrevActionId"value="SATCB01J"> <!--コンテンツ--><script type="text/javascript"> <!-- var fc2footerparam = 'charset=' + (document.charset ? document.charset : document.characterSet) + '&url=' + document.location + '&service=0&r=' + Math.floor (Math.random()*99999999999); var fc2footertag = '<' + 'script src="http://vip.chps-api.fc2.com/apis/footer/?' + fc2footerparam + '" charset="UTF-8"><' + '/script>'; document.write(fc2footertag); //--></script> <!-- FC2, inc.--> <img src="http://media.fc2.com/counter_img.php?id=50" style="visibility:hidden" alt="inserted by FC2 system" width="0" height="0"> <!-- FC2, inc.--> </body></html>

何卒ご教授の程、よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

date

2016/07/20 04:20

コードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「</>」ボタンを押すとコードブロックになります。
guest

回答1

0

ベストアンサー

VBA

1ie.Document.Script.setTimeout "javascript:document.getElementById('popOK').click()", 200 23ie.Document.Script.setTimeout "javascript:document.getElementsByTagName('input')(" & i & ").click()", 200 4でなんとか

投稿2016/07/20 04:23

date

総合スコア1820

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

urakawa

2016/07/20 09:35

date様 ソースのコメントアウトの件、ご指摘ありがとうございました。 次回から気を付けて質問させていただきます。 ご提示いただいたソースで無事に動きました! 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問