こちらと同じコードで同じことを実行しようとしています
https://rabbitfoot.xyz/vba-automation-ws3/
エラーなくF5でコードが実行されます
しかし、エクセルシートに内容が反映されないままプログラムが終了します
F8で確認したところ
If InStr(sClassName, "list-rst is-blocklink js-bookmark js-open-newtab-rd") > 0 Then
と
End If
の間がスキップされているようなのですがなぜかわかりません
指定のクラス名が含まれていないということなのでしょうか?
Option Explicit Const READYSTATE_COMPLETE = 4 Const ROW_RESTAURANT_NAME = 1 Const ROW_FOOD_KIND = 2 Const ROW_SEARCH_KEYWORD = 3 Sub main() Dim objIE As InternetExplorer Dim objLITags As Object Dim objLI As Object Dim objLIChildTags As Object Dim objLIChild As Object 'Dim objAnchorTags As Object 'Dim objAnchor As Object Dim sClassName As String Dim sRestaurantName As String Dim sFoodKind As String Dim sKeyword As String Dim IRow As Long IRow = 1 'IE??N?? Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate2 "https://tabelog.com/tokyo/" '?J???????@ Do While objIE.Busy Or objIE.readyState <> READYSTATE_COMPLETE DoEvents Loop Set objLITags = objIE.document.getElementsByTagName("li") For Each objLI In objLITags '?N???X????擾 sClassName = "" On Error Resume Next sClassName = objLI.className On Error GoTo 0 '?w???N???X????????????????擾??????s?? If InStr(sClassName, "list-rst is-blocklink js-bookmark js-open-newtab-rd") > 0 Then sRestaurantName = "" sFoodKind = "" sKeyword = "" '?X?????擾 sRestaurantName = Trim(objLI.getElementsByTagName("a")(0).innerText) '????????擾 sFoodKind = Trim(objLI.getElementsByTagName("span")(0).innerText) '?????L?[???[?h??擾 Set objLIChildTags = objLI.getElementsByTagName("li") For Each objLIChild In objLIChild sClassName = "" On Error Resume Next sClassName = objLIChild.className On Error GoTo 0 '?L?[???[?h??J???}?????i?[ If InStr(sClassName, "list-rst_search-word-item") > 0 Then sKeyword = IIf(sKeyword = "", Trim(objLIChild.innerText), sKeyword & " , " & Trim(objLIChild.innerText)) End If Next '?V?[?g???o?? Cells(IRow, 1).Value = sRestaurantName Cells(IRow, 2).Value = sFoodKind Cells(IRow, 3).Value = sKeyword IRow = IRow + 1 End If Next MsgBox objIE.document.Title End Sub
「スキップされているようなのですがなぜかわかりません」とのことですが、その変数に値がないのが原因です。タグの内容についてはサイトのHTMLを確認されるのが良いかと思います。※yuuskecchoさんの回答にもあるようにサイトの改変があったのかもしれませんね。
list-rst is-blocklink js-bookmark js-open-newtab-rd のから
list-rst js-bookmark js-rst-cassette-wrap js-is-need-redirect js-done に変更になってました
該当箇所を修正したらシートに反映されました
ありがとうございました
回答1件
あなたの回答
tips
プレビュー