• 締切済み

VBA システムエラー

始めまして VBA初心者です Excel2003のVBAで「toto」のサイトからデータを取得する プログラムを作成しようと思っています。 しかし「xmlHttp.responseText」の部分で 「実行時エラー '-1072896658(c00ce56e)':」 「システムエラー:-1072896658」 のエラーが出てしまいます。 解決方法をご教授いただけないでしょうか? '**************ソース********************************** Dim xmlHttp As MSXML2.xmlHttp Dim html As String Set xmlHttp = CreateObject("MSXML2.XMLHTTP") Call xmlHttp.Open("GET", "http://www.toto-dream.com/dc/SK0160.do", False) Call xmlHttp.send(vbNull) html = xmlHttp.responseText Set xmlHttp = Nothing '**************ソース**********************************

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

totoのサイトのアドレスの意味("http://www.toto-dream.com/dc/SK0160.doの構成など)も知らず、 MSXML2.XMLHTTPは使ったことも無い者だが、(普通はWEBブラウザコントロールをつかう?) WEBで照会すると http://www.f3.dion.ne.jp/~element/msaccess/AcTipsVbaXMLHTTP.html に記事があるが、これを多少変えて、 Sub PrintHttpDoc() Dim oHttp As Object Dim strURI As String ' 変数を初期化します。 ' strURI = "http://www.asia.microsoft.com/japan/" strURI = "http://www.toto-dream.com/dc/SK0160.do" ' オブジェクト変数に参照をセットします。 On Error Resume Next Set oHttp = CreateObject("MSXML2.XMLHTTP") If (Err.Number <> 0) Then Set oHttp = CreateObject("MSXML.XMLHTTPRequest") End If On Error GoTo 0 If oHttp Is Nothing Then MsgBox "XMLHTTP オブジェクトを作成できませんでした。" _ , vbCritical Exit Sub End If With oHttp ' ドメイン認証が必要な場合は、下記の構文になります。 ' .Open "GET", strURI, False, "ドメイン名\ユーザーID", "パスワード" .Open "GET", strURI, False .Send ' ドキュメントを出力します。 ' ソースが Shift-JIS の場合は、下記に変更します。 ' Debug.Print StrConv(.responseBody, vbUnicode) 'MsgBox .responseText MsgBox StrConv(.responseBody, vbUnicode) ' 結果を表示します。 If (.Status >= 200 And .Status < 300) Then MsgBox "成功しました。" & vbCrLf _ & .Status & ": " & .statusText Else MsgBox "失敗しました。" & vbCrLf _ & .Status & ": " & .statusText End If End With ' オブジェクト変数の参照を解放します Set oHttp = Nothing End Sub を実行すると、エラーは出ないで、内容らしきもののメッセージの表示が出る。 参考までに。

noname#158634
noname#158634
回答No.1

関連するQ&A

  • VBA InStrがうまくできない

    ソースを見ると <div class="hd"> と言うタグは有るのに VBAで Sub test() Dim objIE As Object Dim myObj As Object Dim str電話番号 As String Dim strHTML As Variant Dim intstart As Variant str電話番号 = "03-58**-58**" Set objIE = CreateObject("MSXML2.XMLHTTP") objIE.Open "GET", "http://search.loco.yahoo.co.jp/search?p=" & str電話番号, False objIE.send strHTML = objIE.responseText intstart = InStr(1, strHTML, "<div class=""hd"">") End Sub とした時にintstartは0が返ります。 なぜソース上は<div class="hd">は存在するのに 0が返るのでしょうか?

  • myObjにタグを格納してループはできない?

    MSXML2.XMLHTTPの時は、 myObjにタグを格納してループはできないのでしょうか? Sub test() Dim objIE As Object Dim myObj As Object Set objIE = CreateObject("MSXML2.XMLHTTP") objIE.Open "GET", "http://○○.html", False objIE.send For Each myObj In objIE.Document.all.tags("p") Next Set objIE = Nothing End Sub 上記だと実行時エラー438になります。 Set objIE =CreateObject("InternetExplorer.Application") でループしないとダメでしょうか? Set objIE =CreateObject("InternetExplorer.Application") は時間がかかるので、できれば Set objIE =CreateObject("MSXML2.XMLHTTP") でやりたかったのですが、タグを格納できないのでしょうか?

  • MSXML2 実行時エラー14 Replace

    MSXML2でソースを抜き出して改行を置換しようとすると Set objIE = CreateObject("MSXML2.XMLHTTP") objIE.Open "GET", "http://" objIE.send myStr = objIE.responseText myStr = Replace(myStr, Chr(10), "") 実行時エラー14 文字列領域が不足しています。 と出る時があります。 これは変数に格納した文字が多すぎるのでしょうか? でも変数に格納できてるけど、置換ができないって事があるのでしょうか?

  • vba 実行時エラー14 文字列領域が不足していま

    Dim moji As String Dim myAll As Variant moji = "<" Set objMSXML2 = CreateObject("MSXML2.XMLHTTP") objMSXML2.Open "GET", "http://○○.html", False objMSXML2.Send myAll = objMSXML2.responseText myAll = Replace(myAll, Chr(10), "") と言うコードがあるのですが とあるサイトで、 myAll = Replace(myAll, Chr(10), "") の部分で、 実行時エラー14 文字列領域が不足しています。 となります。 どういう意味のエラーなのでしょうか? 「文字列領域が不足」と言う日本語がわかりません。 ちなみに myAll = Replace(myAll, Chr(13), "") とすると、問題なくコードが通ります。

  • VBAでxmlから特定の文字を変数に入れたい

    VBAからXMLを取得したくて方法を検索し、以下のコードで何とか取得ができました。 Sub httpRequest() Dim HttpReq As MSXML2.XMLHTTP Dim DomDoc As MSXML2.DOMDocument Dim targetURL As String targetURI = "http://www.drk7.jp/weather/xml/14.xml" 'HTTP GET Set HttpReq = CreateObject("MSXML2.XMLHTTP") HttpReq.Open "GET", targetURI, False HttpReq.send (Null) 'XML PARSE Set DomDoc = CreateObject("MSXML2.DOMDocument") DomDoc.LoadXML (HttpReq.responseText) dumpDomDoc DomDoc.ChildNodes Set HttpReq = Nothing Set DomDoc = Nothing End Sub Sub dumpDomDoc(objNode) Dim obj For Each obj In objNode MsgBox obj.ParentNode.nodeName & " : " & obj.NodeValue If obj.HasChildNodes Then dumpDomDoc obj.ChildNodes End If Next End Sub このコードですと、読み込んだXMLを一行づつメッセージボックスに延々と表示するだけなのですが、 例えば行先のXMLファイルにある<description>と</description>に囲まれた部分だけを変数に格納するにはどのように記述すればよろしいのでしょうか? ググってはみましたが知識不足の為、解説も理解できず困っております。 大変お手数ですがご教示いただけますようお願いします。

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

    VBAで3つのパターンを作ったのですが ------------------------- Sub test1_wiki() Dim objMSXML2 As Object Set objMSXML2 = CreateObject("MSXML2.XMLHTTP") objMSXML2.Open "GET", "https://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8", False objMSXML2.Send End Sub ------------------------- Sub test2_100円ローソン() Dim objMSXML2 As Object Set objMSXML2 = CreateObject("MSXML2.XMLHTTP") objMSXML2.Open "GET", "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", False objMSXML2.Send End Sub ------------------------- Sub test3_ローソン() Dim objMSXML2 As Object Set objMSXML2 = CreateObject("MSXML2.XMLHTTP") objMSXML2.Open "GET", "https://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%BC%E3%82%BD%E3%83%B3", False objMSXML2.Send End Sub ------------------------- 2のtest2_100円ローソンだけが objMSXML2.Sendで 実行時エラー -2147467259(80004005)エラーを特定できません。 となります。 wikiのページが存在しないからでしょうか? であれば、そのソースが取得できても良いと思うのですが なぜVBAでエラーになるのでしょうか?

  • このエラーの原因は

    Set objMSXML2 = CreateObject("MSXML2.XMLHTTP") objMSXML2.Open "GET", "http://livedoor.blogimg.jp/news23vip/imgs/e/1/e12acab2.jpg", False objMSXML2.Send myAll = objMSXML2.responseText 'ソースを抜き出す ----------------------------------------------- のコードをVBAで実行したら 添付画像の様に 実行時エラー -1072896748(c00ce514) システムエラー -1072896748 となり、 その後、マクロが中断したままVBAコードをコピーしようとしたら 「メモリが不足しています」 となりました。 このエラーの原因は、画像サイトにソースがないからエラーになったのか URLは関係なく、メモリが不足しているからエラーになったのか どちらでしょうか? http://livedoor.blogimg.jp/news23vip/imgs/e/1/e12acab2.jpg は画像サイトです。

  • 文字化けについて

    アクセスのテーブルをTransferTextでエクスポートし、 そのソースの中身のタグをVBAで置換したいのですが Sub test1() Dim objIE As Object Dim myStr As String Dim t As String t = "Table" DoCmd.TransferText acExportHTML, , t, MyDesktop & "\" & t & ".html", True Set objIE = CreateObject("MSXML2.XMLHTTP") objIE.Open "GET", MyDesktop & "\" & t & ".html", False objIE.send myStr = objIE.responseText myStr = Replace(myStr, "<TD DIR=LTR ALIGN=RIGHT>", "<TD>") Debug.Print myStr Set objIE = Nothing End Sub これだと、日本語部分が?になってしまいます。 なので、 myStr = objIE.responseText を myStr = StrConv(objIE.responseText, 64) に変更したら、余分なスペースが入り、結局文字化けしたままです。 http://www2s.biglobe.ne.jp/iryo/vba/IE/http1.html を参考にしたのですが、日本語を含むソースの場合はどうすればいいでしょうか?

  • InternetExplorer.Applicat

    Sub test1() Dim objIE As Object Dim i As Long Dim MyRow As Long Dim Str As String Dim tmp As Variant Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate "http://oshiete.goo.ne.jp/" objIE.Visible = True Do While objIE.Busy = True DoEvents Loop Str = objIE.Document.Body.innerHTML 'ソースを抜き出す tmp = Split(Str, Chr(10)) '配列に格納する MyRow = 1 '初期値 For i = LBound(tmp) To UBound(tmp) Cells(MyRow, 1) = tmp(i) MyRow = MyRow + 1 Next i objIE.Quit Set objIE = Nothing End Sub ************************************************** Sub test2() Dim objIE As Object Dim Str As String Dim tmp As Variant Dim i As Long Dim MyRow As Long Set objIE = CreateObject("MSXML2.XMLHTTP") objIE.Open "GET", "http://oshiete.goo.ne.jp/", False objIE.Send Str = objIE.responseText 'ソースを抜き出す tmp = Split(Str, Chr(10)) '配列に格納する MyRow = 1 '初期値 For i = LBound(tmp) To UBound(tmp) Cells(MyRow, 1) = tmp(i) MyRow = MyRow + 1 Next i Set objIE = Nothing End Sub ************************************************** 上記の二つのコードは どちらもVBAでHTMLソースをエクセルに書き出すコードなのですが 結果が違います。 なぜなのでしょうか? 実際のソースを確認したら CreateObject("MSXML2.XMLHTTP") の方が正しかったです。 CreateObject("InternetExplorer.Application") は何が取得されてるのでしょうか?

  • AccessVBAで、ホームページの内容を取得すると文字化けする

    とあるサイトで下記のようなVBAソースを拾って、 実行してみたところ、日本語部分が文字化けしてしまいました。 --- ここから Dim Http Dim Buf As String 'GET Set Http = CreateObject("MSXML2.XMLHTTP") Http.Open "GET", "http://www.yahoo.co.jp", False Http.send Buf = StrConv(Http.ResponseBody, vbUnicode) --- ここまで これでBufにサイトのHTMLが格納されますが、 日本語部分が文字化けしてしまいます。 どうにかして回避できないものでしょうか。

専門家に質問してみよう