• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:-2147467259 エラーを特定できません。)

-2147467259 エラーを特定できません。

このQ&Aのポイント
  • VBAでエラーが発生し、エラーコード-2147467259(80004005)が表示されます。
  • エラーが特定できないため、原因を特定するのが困難です。
  • エラーが発生する原因として、ウェブページが存在しない可能性が考えられます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

おまけです。 『100円ローソン - Wikipedia』 についても、正しいURLを指定してやれば、  .responseText を取得できること  .responseText を基にタイトルやページ名の取得ができること  .Status に 404  .StatusText に "Not Found" がそれぞれ返ること を、最下のマクロを実行して確認してみてください。 結果は、イミディエイトウィンドウ(Ctrl+G)に、以下のように表示されます。 | [title] Wikipedia [page] メインページ | [urlSent] https://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8 | [htmlTextLength] 87213 | [.Status] 200 [.StatusText] "OK" | | [title] ローソン - Wikipedia [page] ローソン | [urlSent] https://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%BC%E3%82%BD%E3%83%B3 | [htmlTextLength] 319176 | [.Status] 200 [.StatusText] "OK" | | [title] 100円ローソン - Wikipedia [page] 100円ローソン | [urlSent] https://ja.wikipedia.org/wiki/%EF%BC%91%EF%BC%90%EF%BC%90%E5%86%86%E3%83%AD%E3%83%BC%E3%82%BD%E3%83%B3 | [htmlTextLength] 17388 | [.Status] 404 [.StatusText] "Not Found" | | | 実行時エラー '-2147024891': | | | アクセスが拒否されました。 |  → urlを確認!! | [urlSent] http://ja.wikipedia.org/wiki/%EF%BC%91%EF%BC%90%EF%BC%90%E5%86%86%E3%83%AD%E3%83%BC%E3%82%BD%E3%83%B3 | [htmlTextLength] 0 | [.Status] 0 [.StatusText] "Unknown" | ' ' /// Sub ReW9085617() Dim objMSXML2 As Object, oDoc As Object Dim arrURL(), sHTML As String, i As Long   arrURL() = Array( _     "https://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8", _     "https://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%BC%E3%82%BD%E3%83%B3", _     "https://ja.wikipedia.org/wiki/%EF%BC%91%EF%BC%90%EF%BC%90%E5%86%86%E3%83%AD%E3%83%BC%E3%82%BD%E3%83%B3", _     "http://ja.wikipedia.org/wiki/%EF%BC%91%EF%BC%90%EF%BC%90%E5%86%86%E3%83%AD%E3%83%BC%E3%82%BD%E3%83%B3")   Set objMSXML2 = CreateObject("MSXML2.XMLHTTP")   For i = 0 To UBound(arrURL)     objMSXML2.Open "GET", arrURL(i), False     On Error Resume Next     objMSXML2.Send     Select Case Err: Case -2147024891, -2147467259       Debug.Print "| 実行時エラー '"; CStr(Err); "': |"       Debug.Print "| "; Split(Err.Description, vbCrLf)(0); " |  → urlを確認!!"     End Select     On Error GoTo 0     sHTML = objMSXML2.responseText     If Len(sHTML) Then       Set oDoc = CreateObject("HTMLFILE")       oDoc.Write sHTML       Debug.Print "[title] "; oDoc.Title, "[page] "; oDoc.GetElementByID("firstHeading").innertext       Set oDoc = Nothing     End If     Debug.Print "[urlSent] "; arrURL(i); vbLf; "[htmlTextLength]"; Len(sHTML)     Debug.Print "[.Status]"; objMSXML2.Status, "[.StatusText] """; objMSXML2.statusText; """"; vbLf     objMSXML2.abort   Next i   Set objMSXML2 = Nothing End Sub ' ' ///

byjqlolck
質問者

お礼

ありがとうございます。

その他の回答 (1)

回答No.1

こんにちは。 Webブラウザなどで、 http://ja.wikipedia.org/wiki/%EF%BC%91%EF%BC%90%EF%BC%90%E5%86%86%E3%83%AD%E3%83%BC%E3%82%BD%E3%83%B3 を、 小窓に入力してページを開こうとしたり、張られたリンク先を開こうとすると、 自動的に、 https://ja.wikipedia.org/wiki/%EF%BC%91%EF%BC%90%EF%BC%90%E5%86%86%E3%83%AD%E3%83%BC%E3%82%BD%E3%83%B3 正しいページへと、遷移してくれるけれど、 そういう機能は、MSXML2.XMLHTTP には用意されていないのか? というお訊ねでしたら、私の知る限りでは、用意されていません。 普通に"https"でURLを指定すれば、正しく機能することを確認しました。 > wikiのページが存在しないからでしょうか? 概ね、その通りですが、よくある'エラー 404'ではありません。 > であれば、そのソースが取得できても良いと思うのですが > なぜVBAでエラーになるのでしょうか? こちらで最初にテストした時のエラーは、以下。 '------------------------- '|実行時エラー '-2147024891 (80070005)': '|アクセス拒否されました。 '------------------------- 構わず繰り返し実行し続けていると '------------------------- '|実行時エラー '-2147467259 (80004005)': '|エラーを特定できません '------------------------- といった具合でした。(環境によって違いが見られる部分でしょうけれど) アクセス拒否されている、ということなら、 ソースも取得できないことも納得がいくのではないでしょうか。

byjqlolck
質問者

お礼

ありがとうございます。

関連するQ&A