• ベストアンサー

実行時エラー7 メモリが不足しています。

vbaでie操作をしていて、ループしているのですが strURL = objIE.Document.body.innerHTML の部分で、 「実行時エラー7 メモリが不足しています。」 と言うエラーで一時中止になりますが、 そのままF5を押すと、通過できます。 エラーではないのでしょうか? 中断すると治るエラーなのでしょうか?

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

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.1

こんにちは。 > strURL = objIE.Document.body.innerHTML strURL という名の変数に格納するのなら、   strURL = objIE.Document.url とか   strURL = objIE.LocationURL という事がしたいのかな?と迷う面もありますが、 取得したいのは.body.innerHTMLということでお応えします。 > 「実行時エラー7 > メモリが不足しています。」 問題のエラーに関しては、同じシチュエーションでは経験したことがありません。 他の場面で遭遇したことがある同様のエラーとしては、解決策として、   Dim strURL As String と文字列型で宣言してあげることでエラーを回避できるケースがあります。 今回は"vba"に関するご質問ということですから、一旦、変数の型宣言を確認してみてください。 もう一点。 これは「想像の解決策」といった程度で確度は低いですが、  objIE.ReadyState が READYSTATE_COMPLETE に変わるタイミングと  objIE.Document.ReadyState が "complete" に変わるタイミングにはズレがありますから、 それが原因で、.body.innerHTMLにとんでもない値が格納される場合があったように思います。 > エラーではないのでしょうか? > 中断すると治るエラーなのでしょうか? "中断すると治る"ようなエラーへのアプローチとしては、 タイミングの最適化を図るのは、まあよくあることではあります。 以下、対策例です。 ' ' /// Sub Re8727064() Dim objIE As Object ' SHDocVw.InternetExplorer Dim objDoc As Object ' MSHTML.HTMLDocument Dim strHTML As String   Set objIE = CreateObject("InternetExplorer.Application") ' Set objIE = New SHDocVw.InternetExplorer   objIE.Visible = True   objIE.Navigate "http://okwave.jp/qa/q8727064.html"   Do While objIE.Busy Or objIE.ReadyState < 4     DoEvents   Loop   Set objDoc = objIE.Document   Do While objDoc.ReadyState <> "complete"     DoEvents   Loop   strHTML = objIE.Document.body.innerHTML   ' ' 処理(strHTML) End Sub ' ' /// 後は、実際にエラーが発生するコードと実際のURLの提示があれば、 より的確なアドバイスが得られるかも知れません。 うまく解決に導けなかったならすみません。

NUPXRKNCLINXT
質問者

お礼

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

その他の回答 (1)

回答No.2

型宣言の問題では? strURLがどの宣言でされているか分からないですが、宣言している場合は削除してみたらいいと思います。

NUPXRKNCLINXT
質問者

お礼

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

関連するQ&A