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

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

新規登録して質問してみよう
ただいま回答率
87.20%
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ブラウザのほとんどに搭載されています。

解決済

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

urakawa
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ブラウザのほとんどに搭載されています。

1回答

0評価

4クリップ

31426閲覧

投稿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>

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

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

date

2016/07/20 04:20

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

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

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ブラウザのほとんどに搭載されています。