前提・実現したいこと
VBA初心者です。ネット上の情報を参考にMSXML2.XMLHTTPによりWebからスクレイピングするサイトを使用しているのですが、PCまたはエクセルのバージョンが変わったためか、エラーが発生して先に進めなくなりました。
デバッグ時のステップイン実行では何故か突破できます。が取得はうまくいってません。
objTAGがVariant型オブジェクトであることによって発生する事例とわかったのですが、この場合の解決方法がわかりません。
発生している問題・エラーメッセージ
実行時エラー424 オブジェクトが必要です
該当のソースコード
VBA
1w_URL = サイトのURL 2 3 'XMLHTTPオブジェクトを作成 4 Set objHttp = CreateObject("MSXML2.XMLHTTP") 5 'httpfileオブジェクトを生成 6 Set objHttpFile = CreateObject("htmlfile") 7 8 If objHttp Is Nothing Then 9 MsgBox "オブジェクト作成失敗。" _ 10 , vbOKOnly + vbCritical, "エラー" 11 Exit Sub 12 End If 13 14 With objHttp 15 'HTTPリクエスト作成 16 .Open "GET", w_URL, False 17 'HTTPリクエストのサーバ送信 18 .send 19 '待機 20 Do While objHttp.readyState < 4 21 DoEvents 22 Loop 23 'HTMLソース取得 24 strHtml = objHttp.responseText 25 26 '取得したHTMLソースをhttpfileオブジェクトに書き出し 27 objHttpFile.write strHtml 28 29 '配列にデータセット 30 31 ”**objTAG はVariant型 ここでエラーが発生する**” 32 i = 0 33 For Each objTAG In objHttpFile.body.all 34 myArray(0, i) = TypeName(objTAG) 35 myArray(1, i) = "'" + objTAG.outerHTML 36 myArray(2, i) = objTAG.innerText 37 i = i + 1 38 Next 39 End With 40 41 ”ここ以降ではエラーは発生しない” 42 43 Set objHttp = Nothing 44 Set objHttpFile = Nothing
補足情報
現在の環境Windows10 21H1 Excel 2019
もう片方の環境は失念しましたが windows10 Excelはどのバージョンか失念しましたが2019ではないことは確かです。
見つけた類似の例
https://teratail.com/questions/353579
424エラーが発生する場合、「Variant型の変数に対してクラス変数が設定されていない」ことが原因でありこの場合setステートメントを使用する解決方法が多数ヒットしました。ローカルウインドウで見たところ。objTAGがVariant型のオブジェクトでした。これは質問した事例に当てはめることができるでしょうか。
あなたの回答
tips
プレビュー