前提
ExcelのVBAから、ヘッドレスchromeでWEBページのキャプチャを撮る方法についての質問です。
実現したいこと
ページを開いた瞬間と、その1秒後で画面の状態(表示されるボタンの数など)の異なるページがあります。
現在のキャプチャ用のマクロでは開いた瞬間がキャプチャされてしまいますが、必要なのは1秒後の状態のキャプチャです。
イメージでは「URLを開く→1秒待つ→キャプチャする」なのですが、現在の書き方では「URLを開く→キャプチャする」を1行で実行しているため「1秒待つ」ことができません。
該当のソースコード
VBA
1Function capture() 2 3Dim cmd As String 4Dim i As Long 5Dim rc As Long 6 7For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row 8cmd = "" 9cmd = cmd & "c:\Program Files (x86)\Google\Chrome\Application\chrome.exe" 10cmd = cmd & " --headless" 11cmd = cmd & " --disable-gpu" 12cmd = cmd & " --hide-scrollbars" 13cmd = cmd & " --screenshot=c:\HCcapture\" & Cells(i, 1) & ".png" 14cmd = cmd & " " & Cells(i, 2) 15rc = Shell(cmd, vbHide) 16Debug.Print i & "-" & Now 17Application.Wait Now + TimeValue("0:00:05") 18DoEvents 19Next 20 21End Function
試したこと
①「1秒待つ」方法を調べましたが意味がありません(使用する場所がない)でした。
A)
Dim waitTime As Variant waitTime = Now + TimeValue("0:01:00") pplication.Wait waitTime
B)
cmd = cmd & " --timeout 60 > Null"
②ダメ元で、
cmd = cmd & " --screenshot=c:\HCcapture\" & Cells(i, 1) & ".png"
上記のキャプチャを実行する行を2回繰り返して記述したところ、テストでは「1秒後」のキャプチャが保存されました。
ですが、確認のために再度実行したところ、やはり「開いた瞬間」のキャプチャしか保存されなくなったため、まぐれだったようです。
解決方法はありそうでしょうか……
何かアイデアをいただければ幸いです。
どうぞよろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
環境はWindows10 Home 64bit、Chrome 105、Excel2019です。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/09/27 05:51
2022/09/27 06:08