ダイアログボックスをクリックしたい
未読分:10件
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
Message#10 2020年11月12日(木)18時16分 From: Ao | 返事 削除 変更 |
初めまして。ご教授いただければと思います。 Webページにログインし、「全施設一括調整」をクリックするとポップアップが表示されます。 OKを押下したいのですが、素人ながら下記のコードではOKを押下することができません。 どのようにしたらいいでしょうか? Sub IE2() Dim objIE As InternetExplorer Set objIE = New InternetExplorer objIE.Visible = True objIE.navigate "https://〜" Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE DoEvents Loop Dim htmlDoc As HTMLDocument Set htmlDoc = objIE.document With htmlDoc .getElementById("txtCmpCd").Value = Worksheets("Sheet1").Range("C3") .getElementById("txtUserCd").Value = Worksheets("Sheet1").Range("C4") .getElementById("txtPassWd").Value = Worksheets("Sheet1").Range("C5") .getElementById("cmdLgn").Click End With Set htmlDoc = Nothing 'ログインページのHTMLをいったん破棄 Call WaitIE(objIE) '画面遷移の待機 Set htmlDoc = objIE.document 'ログイン後のページのHTMLを読み込む '預託在庫照会をクリック Dim obj As Variant For Each obj In htmlDoc.getElementsByTagName("a") If obj.innerText = "預託在庫照会" Then obj.Click Exit For End If Next Call WaitIE(objIE) '画面遷移の待機 '全施設一括調整ボタンクリック With htmlDoc .getElementById("ctl00$Content$cmdAllAdj").Click End With Call WaitIE(objIE) '画面遷移の待機 'メッセージの確認 hWindow = FindWindow("#32770", "Webページからのメッセージ") 'FindWindowでシステムダイアログのウィンドウを探します。 PostMessage hWindow, WM_COMMAND, vbOK, 0& 'システムダイアログのOKボタンを押す End Sub |
Message#9 2020年8月3日(月)17時49分 From: aaa | 返事 削除 変更 |
sendkyesでうまくいきました > SendKeysを使われてはどうですか? > > > Web ページからのメッセージ > > のメッセージをクリックできなくて、ここへたどり着きました。 > > > > 現在、64bitのexcel2016を使用しております。 > > 先の書込みのページは現在表示されないので検証できません。 > > > > https://gist.github.com/kumatti1/4028479 > > を参考にしましたが、 > > Private WithEvents ie As InternetExplorer > > でエラーが出て、先へ進めませんでした。 > > コメントアウトすると、動きますが、 > > 'ボタンクリックコード追加 > > にCall IEButtonClick(objIE, "確認ダイアログ")を追加しましたが、ダイアログ表示はしましたが、クリックはされませんでした。 > > ご教授のほど、宜しく御願い致します。 |
Message#8 2019年3月2日(土)04時43分 From: 三橋 | 返事 削除 変更 |
SendKeysを使われてはどうですか? > Web ページからのメッセージ > のメッセージをクリックできなくて、ここへたどり着きました。 > > 現在、64bitのexcel2016を使用しております。 > 先の書込みのページは現在表示されないので検証できません。 > > https://gist.github.com/kumatti1/4028479 > を参考にしましたが、 > Private WithEvents ie As InternetExplorer > でエラーが出て、先へ進めませんでした。 > コメントアウトすると、動きますが、 > 'ボタンクリックコード追加 > にCall IEButtonClick(objIE, "確認ダイアログ")を追加しましたが、ダイアログ表示はしましたが、クリックはされませんでした。 > ご教授のほど、宜しく御願い致します。 |
Message#7 2019年2月7日(木)04時08分 From: masa | 返事 削除 変更 |
Web ページからのメッセージ のメッセージをクリックできなくて、ここへたどり着きました。 現在、64bitのexcel2016を使用しております。 先の書込みのページは現在表示されないので検証できません。 https://gist.github.com/kumatti1/4028479 を参考にしましたが、 Private WithEvents ie As InternetExplorer でエラーが出て、先へ進めませんでした。 コメントアウトすると、動きますが、 'ボタンクリックコード追加 にCall IEButtonClick(objIE, "確認ダイアログ")を追加しましたが、ダイアログ表示はしましたが、クリックはされませんでした。 ご教授のほど、宜しく御願い致します。 |
Message#6 2014年11月28日(金)06時29分 From: VBAマスター | 返事 削除 変更 |
こちらも参考にしてはいかがですか? http://oshiete.goo.ne.jp/qa/7429212.html |
Message#5 2014年11月27日(木)03時18分 From: VBAマスター | 返事 削除 変更 |
提示したプログラムを実行するとエラーが起きますね。 以下のような形ではないでしょうか? Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Declare Sub Sleep Lib "KERNEL32" (ByVal dwMilliseconds 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 |
Message#4 2014年11月27日(木)03時05分 From: ゴリゴリ | 返事 削除 変更 |
すいません、少し試したいことがあったのでやったらうまくいきました。 なんとか試行錯誤してできてよかったです!! 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 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 |
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降