- 締切済み
【VBA】sleepかwaitをどこに書き込めば
ExcelでWebスクレイピングを行うための、VBAのソースをご教示頂きました。 過去の質問|https://okwave.jp/qa/q9420082.html このソースは完璧に動くのですが、googleに負荷を掛けてしまい、100件ほど抽出するとエラーが出て使えなくなってしまいます。 そこでsleepやwaitを使って、間隔を空けて実行させたいと考えています。 以下のどの部分に追加すれば良いのか、教えてください! お願い致します。 ――――――――――――――――――― ' Option Explicit ' Sub Macro1() ' Dim SheetW As Worksheet Dim SheetO As Worksheet Dim Start As Integer Dim URL As String Dim NowCell As String Dim RowI As Integer Dim RowO As Integer Dim RowEnd As Integer Dim Col As Integer Dim ColEnd As Integer ' Set SheetO = ActiveSheet [A10:C10] = Array("番号", "URL", "説明") [A11:C1048576].Clear Set SheetW = Sheets.Add SheetW.Name = "Webクエリ" RowO = 11 ColEnd = [A5].End(xlToRight).Column ' For Start = SheetO.[B2] To SheetO.[C2] Step SheetO.[D2] DoEvents URL = SheetO.[B1] & SheetO.[C1] & SheetO.[D1] & Start With ActiveSheet.QueryTables.Add( _ Connection:="URL;" & URL, _ Destination:=[A1]) .Name = "Google検索結果" .WebSelectionType = xlEntirePage .WebFormatting = xlWebFormattingAll .BackgroundQuery = False .Refresh End With ' With SheetO RowI = [A:A].Find(.[B3]).Row + 1 RowEnd = Cells(Rows.Count, "A").End(xlUp).Row While Not Cells(RowI, "A") Like .[B4] And _ RowI < RowEnd NowCell = Cells(RowI, 1) ' For Col = 2 To ColEnd ' If NowCell Like .Cells(5, Col) Then Exit For End If Next Col ' If Cells(RowI, 1).Hyperlinks.Count > 0 And Col > ColEnd Then .Cells(RowO, "A") = RowO - 10 .Cells(RowO, "C") = NowCell NowCell = Cells(RowI, "A").Hyperlinks(1).Address ' SheetO.Cells(RowO, "B") = NowCell .Hyperlinks.Add Anchor:=.Cells(RowO, "B"), _ Address:=NowCell, _ TextToDisplay:=NowCell RowO = RowO + 1 End If RowI = RowI + 1 Wend End With Next Start ' "Webクエリ"シート削除 Application.DisplayAlerts = False SheetW.Delete Application.DisplayAlerts = True End Sub
補足
今回もご回答ありがとうございます! まず「職場で~」という質問ですが、個人用途です! このアカウントも、10数年前にアットホームダットというドラマを見て、作った個人のアカウントです(笑) 平日は目を酷使する仕事をしているので、土日はパソコンから離れた生活(読書や美術館etc.)をしています。スマホでも確認できますが、長文を打つときや、理解を深めたいときはパソコンで確認しています。 で、話しを戻します。 D1については、両方とも試しましたが同じでした。 そして今回教えて頂いた方法でもダメでした(涙) ロボットの表示がされない場合もあるのですが、 そもそもExcelにURL/説明ともに、1つも表示(反映)されません。 エラーも出ず、読み込んでいる挙動はあるのですが、ダメでした。 何度か試し、1度だけ1行分だけ表示されたことがありました。 しかしそれ以降は、Excelがまっさらorロボットと認識されるか… どちらかでした。 低速とは、どこからいうのか分かりませんがw 手元にあるPCでは残念ながら、試せません。 最後に最初に教えて頂いたソースに、もしsleepやwaitを入れるとしたら、どこになりますか?勉強のため教えてください。