http://kamicha1.web.fc2.com/Excel/Test20090726.html
このページの OK ボタンをクリックすると、「PDFを表示しますか?」という表示が出るので、その表示の OK ボタンをクリックしたいのです。現在できているコードは、以下のとおりです。
Sub Sample()
Dim objIE As Object
Dim objTag As Object
Dim i As Long
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.Navigate2 ("http://kamicha1.web.fc2.com/Excel/Test20090726.html")
While (objIE.Busy = True): Wend ' 表示完了まで待つ
Set objTag = objIE.Document.getElementsByTagName("INPUT")
For i = 0 To objTag.Length - 1
If objTag(i).Value = "OK" Then
objTag(i).Click
'↑ここでClickした後にJavaScriptのConfirm関数で表示されるOKボタンを
クリックしたい
Exit For
End If
Next i
End Sub
以上、ご教授いただけると幸いです。何卒宜しくお願いいたします。
スマートでないですが、SendKeys を使えばできます。
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub Sample() '・・・ Sleep (1000) '待ちを入れる SendKeys "{enter}", True
再回答ですみませんが
Sleep で待ちを入れましたか?
回答では
Sleep (1000) としましたが、
2000とか3000とか待ち時間を増やしても駄目でしょうか?
HALSPECIALさん、何度もありがとうございます。仰るとおりに数字を調整してみたのですが、やはり問題の箇所で止まってしまっています。
何度も済みません。
Option Explicit Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private Declare Function GetLastActivePopup Lib "user32" _ (ByVal hWnd As Long) As Long Private Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" ( _ ByVal hWnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ ByVal lParam As Long) As Long Public Sub Sample() Dim objIE As Object Dim objTag As Object Dim i As Long Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate2 ("http://kamicha1.web.fc2.com/Excel/Test20090726.html") While (objIE.Busy = True): Wend ' 表示完了まで待つ Set objTag = objIE.Document.getElementsByTagName("INPUT") For i = 0 To objTag.Length - 1 If objTag(i).Value = "OK" Then ' objTag(i).Click '↑ここでClickした後にJavaScriptのConfirm関数で表示されるOKボタンを 'クリックしたい '=================================================================== 'VBAからではなく、ページ中のスクリプトで押させる objIE.Document.Script.setTimeout "javascript:document.getElementById('popOK').click()", 200 'ダイアログが表示されるまで待機 Dim lngDHnd As Long Do Sleep (200) lngDHnd = GetLastActivePopup(objIE.hWnd) Loop While lngDHnd = objIE.hWnd 'OKボタンを押す Const WM_COMMAND = &H111 Dim lngRc As Long lngRc = PostMessage(lngDHnd, WM_COMMAND, 1, 0) '=================================================================== Exit For End If Next i End Sub
(参考)
HALSPECIALさん、本当にありがとうございました、無事、目的のPDFが開けました!
HALSPECIALさん、ありがとうございます。何が原因かわからないのですが、SENDKeysのENTERが効かないようで、やはりPDF表示まで進むことができません・・・。