• ベストアンサー

MSXML2 実行時エラー14 Replace

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

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

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

https://www.google.co.jp/search?hl=ja&q=%22%E5%AE%9F%E8%A1%8C%E6%99%82%E3%82%A8%E3%83%A9%E3%83%BC%2214+%22%E6%96%87%E5%AD%97%E5%88%97%E9%A0%98%E5%9F%9F%E3%81%8C%E4%B8%8D%E8%B6%B3%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%22&lr=lang_ja となります。プラットフォームというか、”プログラミング > Visual Basic ”で投稿していますが、何を使って実行されているか記載しないと!!!!!  誰がメッセージをだしているかで、上記検索リストを見れば違う事はあきらか。 コードも全部記載されているわけではないですよね。 上記リストからOfficeだと http://msdn.microsoft.com/ja-jp/library/office/gg264527.aspx ですね。変数に格納できるサイズは決まっています。また、使用するメモリーも決まっています。特にスタックエラーを起こすようなプログラミングだと特にそうですね。思い当たるところありませんか?

UKPVXQGYHMUGA
質問者

お礼

ありがとうございました。

その他の回答 (2)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

http://msdn.microsoft.com/ja-jp/library/office/gg264527.aspx 別の変数を宣言してそこに代入してみては?

UKPVXQGYHMUGA
質問者

お礼

ありがとうございました。

  • kumatti1
  • ベストアンサー率60% (73/121)
回答No.1

置き換え先も同じ程度、容量が必要だからではないでしょうか。

UKPVXQGYHMUGA
質問者

お礼

ありがとうございました。

関連するQ&A

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

    一度変数に格納した値を置換しようとしたら、 実行時エラー 14 文字列領域が不足しています。 となりました。 変数は、String型で宣言しています。 myStr = rs("回答文") myStr = Replace(myStr, Chr(10), "") のように、一度myStrに格納した変数の格納を取ろうと思い、 Replaceで置換しようとすると、エラーが発生します。 myStr = rs("回答文") で myStrに格納できた時点で、容量は足りているはずだし、 Replace(myStr, Chr(10), "")で置換することによって、更に容量を減らしているのに なぜエラーになるのでしょうか? アクセスvbaです。

  • vba 改行 「・・」が置換できない

    シートの文字を取得して、削除したい文字を置換で消そうと思うのですが、 変数に格納した値にマウスカーソルを充てると、「・・」と表示され、置換できません。 ?mystr とすると、 改行が返ります。 mystr = Replace(mystr, Chr(10), "") mystr = Replace(mystr, Chr(13), "") mystr = Replace(mystr, vbCr, "") mystr = Replace(mystr, vbCrLf, "") mystr = Replace(mystr, Chr(10) & Chr(13), "") mystr = Replace(mystr, Chr(10) + Chr(13), "") で置換を試みましたが、全部だめです。 Debug.Print Asc(mystr) とすると、9が返ります。 この文字はどうやったら置換で消せるのでしょうか?

  • 文字化けについて

    アクセスのテーブルを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 を参考にしたのですが、日本語を含むソースの場合はどうすればいいでしょうか?

  • 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), "") とすると、問題なくコードが通ります。

  • Chr(13)とChr(10)の違いは?

    myStr = Replace(myStr, Chr(13), "") や myStr = Replace(myStr, Chr(10), "") で、改行を置換しているのですが、どちらかでも改行できる時や どちらかじゃないと改行できない時があります。 そもそもChr(13)とChr(10)の違いはなんでしょう? どちらも改行ですよね? 何が違うのでしょう?

  • 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.XMLHTTP

    ここのokwaveのサイトを自動でログインしたり、 ログアウトしたりをvbaで行ないたいのですが objIE.Navigate "http://" & URL名 & "/logout?return_url=http%3A%2F%2F" & URL名 & "%2Fmypage" なら、ログアウトできるのですが、 strURL = "http://" & URL名 & "/logout?return_url=http%3A%2F%2F" & URL名 & "%2Fmypage" Set objMSXML2 = CreateObject("MSXML2.XMLHTTP") objMSXML2.Open "GET", strURL, False objMSXML2.Send myStr = objMSXML2.responseText 'ソースを抜き出す の方法だと、ログアウトはできません。 objIE.Navigate と objMSXML2.Open "GET", strURL, False objMSXML2.Send では意味が違うのでしょうか? objMSXML2.Open "GET", strURL, False objMSXML2.Send のソースをエクセル上に書き出してみたら、ログアウト後の情報は取れています。 けど実際ブラウザを開くと、ログインされた状態のままです。

  • 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 '**************ソース**********************************

  • MSXML2で、サイトのタイトルを取得したい

    アクセスvbaです。 InternetExplorerの方法だと、 **************************************************** Sub Sample1() Dim ObjIE As InternetExplorer Set ObjIE = CreateObject("InternetExplorer.Application") ObjIE.Navigate "http://www.yahoo.co.jp/" ObjIE.Visible = True Do While ObjIE.Busy = True DoEvents Loop Do While ObjIE.Document.ReadyState <> "complete" DoEvents Loop Debug.Print ObjIE.Document.Title Debug.Print ObjIE.LocationName ' 同じ ObjIE.Quit Set ObjIE = Nothing End Sub **************************************************** で、該当のサイトのタイトルを取得できるのですが、 これではなく、 **************************************************** Sub Sample2() Dim objMSXML2 As Object Dim myObj As Object Dim myAll As Variant Set objMSXML2 = CreateObject("MSXML2.XMLHTTP") objMSXML2.Open "GET", "http://www.yahoo.co.jp/", False objMSXML2.Send myAll = objMSXML2.responseText 'ソースを抜き出す ’タイトル取得 Set objMSXML2 = Nothing End Sub **************************************************** の方法で、サイトのタイトルを取得したいのですが、 可能でしょうか? コードをご教授ください。よろしくお願いします。

  • 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") は何が取得されてるのでしょうか?

専門家に質問してみよう