- ベストアンサー
-2147467259 エラーを特定できません。
- VBAでエラーが発生し、エラーコード-2147467259(80004005)が表示されます。
- エラーが特定できないため、原因を特定するのが困難です。
- エラーが発生する原因として、ウェブページが存在しない可能性が考えられます。
- みんなの回答 (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 ' ' ///
その他の回答 (1)
- real beatin(@realbeatin)
- ベストアンサー率82% (174/211)
こんにちは。 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)': '|エラーを特定できません '------------------------- といった具合でした。(環境によって違いが見られる部分でしょうけれど) アクセス拒否されている、ということなら、 ソースも取得できないことも納得がいくのではないでしょうか。
お礼
ありがとうございます。
お礼
ありがとうございます。