ここから本文です

vbaでieを操作しようとしています。 環境はWindows7、IE11、Excel2013、vba7.1で...

aso********さん

2015/7/2110:52:22

vbaでieを操作しようとしています。
環境はWindows7、IE11、Excel2013、vba7.1です。

ポップアップウィンドウがでるため"OK"ボタンを押したいのですが、PostMessageが反応しません。下記コードでポップアップを見つけてIF文の中には入るのですが、手動で”OK”ボタンを押さなければポップアップウィンドウが出たままbusyで無限ループになります。

sendkeysはあまり利用したくないため、何か良い方法があれば教えていただきたいです。

Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.Navigate "https://www.***.html"
Do While objIE.Busy Or objIE.ReadyState < 4
DoEvents
Loop
Set objFRAME = objIE.Document.frames
Set objDOC = objFRAME(1).Document
objDOC.all("uid").Value = Wk_ID
objDOC.all("pwd").Value = Wk_Pass
objDOC.Forms(0).submit
OK_Flg = 0
Do Until OK_Flg = 3
Do While objIE.Busy Or objIE.ReadyState <> 4
fw = 0
fw = FindWindow("#32770", "Web ページからのメッセージ")
If fw > 0 Then
PostMessage fw, &H111, 1, 0 '←ここで"OK"ボタンを押したい
End If
DoEvents
Loop
OK_Flg = OK_Flg + 1
Loop

閲覧数:
1,772
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

jun********さん

2015/7/2119:12:24

VBAに制御権が戻ってこない為、処理が中断したままになっているのではないでしょうか。

VBA→IE→JavaScript

このように制御されているような場合、Sendkeysも受け付けない(そもそも実行されない)状態になります。
Formに対してSubmitメソッドを実行しているようですが、これをJavaScriptで実行してみてはいかがでしょうか。

ie.document.Script.setTimeout "javasciprt:xxx",100

「xxx」の部分に、発行したいスクリプトを当てはめます。この場合、

document.frames(1).document.forms(0).submit();

とするはずです。URLが分からないので実験することはできませんでしたが、テストページで、Sendkeysが機能することは確認できました。

'サンプルコード
Sub test()
Dim ie As Object

Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.Navigate "C:\サンプル\alert.htm"

ie_wait ie

ie.document.Script.setTimeout "javascript:document.forms(0).submit()", 100
Application.Wait [Now()+"00:00:05"]
SendKeys "{ENTER}"
Application.Wait [Now()+"00:00:05"]

End Sub


Private Sub ie_wait(ie As Object)
Do
DoEvents
Loop Until (ie.Busy = False) And (ie.ReadyState = 4)
End Sub


<alert.htm>

<html>
<body>
<form action="javascript:alert('test');">
<input type="submit" value="OK">
</form>
</body>
</html>

  • 質問者

    aso********さん

    2015/7/2308:27:54

    サンプルコードまでのせていただきありがとうございました。
    参考にさせていただきましたが同じところでボタンが押せずにループします。
    SendKeysでもPostMessage fw, &H111, 1, 0 でも症状が同じでどうもポップアップがアクティブ?になっていないみたいで、手動のEnterも聞きませんでした。

  • その他の返信(2件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

ベストアンサー以外の回答

1〜1件/1件中

kum********さん

2015/7/2208:05:47

CommandStateChangeイベントで処理されるとか。
https://gist.github.com/kumatti1/757814710a21c3aebf0b

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる