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

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

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

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

Q&A

解決済

1回答

2789閲覧

VBAでWEBページのボタンをクリックすると処理が中断する

k-4

総合スコア11

VBA

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

0グッド

0クリップ

投稿2020/05/12 03:40

前提・実現したいこと

VBAで、WEBページのボタンをクリックすると、確認のポップアップが表示されます。
すると、VBAの処理が止まり、ポップアップのOKボタンを押すまで処理が再開されません。

ボタンクリック処理の直下に、debug.printを記述してみた処、コンソール出力はされなかったので、
ボタンクリック処理の行で、処理が止まっているようです。

いろいろ検索して試してみたのですが、どうしても回避することができません。

該当のソースコード

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 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 Function FindWindow Lib "User32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Sub fnCalibCheck() Dim objIE As InternetExplorer Dim htmlDoc As HTMLDocument 'HTMLドキュメントオブジェクトを準備 Dim strUrl As String Dim hWnd As Long Const WM_COMMAND As Long = &H111& 'Webページを開く Set objIE = New InternetExplorer objIE.Visible = True '個別URLを作成 strUrl = "https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" objIE.navigate strUrl Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE DoEvents Loop Sleep 1000 'objIEで読み込まれているHTMLドキュメントをセット Set htmlDoc = objIE.document 'ダイアログボックスを表示しないを足したが機能しない 'objIE.Silent = False '問題の箇所 'ボタンをクリア htmlDoc.getElementsByName("clearButton")(0).Click   'ここで止まる。VBAから制御が離れる 'スリープを入れたり、外したらしてもダメ 'Sleep 2000 '1と2の順序を入れ替えてもダメ '1ダイアログを消す魔法の呪文。失敗 objIE.navigate "JavaScript:function confirm() { return true; }" '2こちらも失敗 hWnd = FindWindow("#32770", "Web ページからのメッセージ") If hWnd <> 0 Then PostMessage hWnd, WM_COMMAND, vbOK, 0 End If 'オブジェクト解放 Set htmlDoc = Nothing 'IEを閉じる objIE.Quit 'オブジェクト解放 Set objIE = Nothing End Sub

試したこと

1.objIE.Silent = Falseでそもそもポップアップ表示をなしにできないか
2.Sleep 2000を入れたらどうなるか
3.objIE.navigate "JavaScript:function confirm() { return true; }"でボタンを押せないか
4.hWnd = FindWindow("#32770", "Web ページからのメッセージ")で、ポップアップを検知する

※確認した処、3,4のコード行まで処理が走らない様子です。

補足情報(FW/ツールのバージョンなど)

WIN10、EXCEL2016

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

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

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

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

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

guest

回答1

0

ベストアンサー

よくわかりませんが

vba

1 '1ダイアログを消す魔法の呪文。失敗 2 objIE.navigate "JavaScript:function confirm() { return true; }"

これは

vba

1 '問題の箇所 2 'ボタンをクリア 3 htmlDoc.getElementsByName("clearButton")(0).Click   'ここで止まる。VBAから制御が離れる

この前(この上)で実行すべきものでは?

投稿2020/05/12 10:28

sousuke

総合スコア3828

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

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

k-4

2020/05/13 04:23

ご指摘いただいた内容で、解決しました。 ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問