• ベストアンサー

実行時エラー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

  • 【Excel】【VBA】実行時エラー メモリ不足

    【Excel】【VBA】実行時エラー -'-2147467259「メモリ不足です」 win8.1 エクセル2010 メモリ8Gのスペックで VBAコードを実行しているのですが たまに 実行時エラー -'-2147467259「メモリ不足です」 となり、マクロが中断されてしまいます。 今回、実行時エラー -'-2147467259「メモリ不足です」と出たコードは rs.Open strSQL, cn, adOpenKeyset, adLockOptimistic です。 前後のコードは省略していますが 普段は問題なく通ります。 strSQLも、中身をクエリのSQLビューに張り付けて、クエリで見てみたけど 問題なく表示されます。 なぜメモリ不足ですとなるのでしょうか? スペックが低いのですか?

  • 「実行時エラー 3035メモリ不足です」

    アクセスのテーブルを開いてレコードを並び替えようとすると 「メモリ不足です」と表示されます。 VBAで、 DoCmd.RunSQL SQL のコードでも同じように 「実行時エラー 3035メモリ不足です」と言うエラーが発生します。 VBAでエラーになった場合は、 一度エラーでとまりますが、そのままF5を押すと問題なく実行できます。 メモリは4G積んでいます。win7です。 そんなにメモリが低いでしょうか? アクセスのレコード数は40000くらいです。

  • 実行時エラー '-2147024726

    ie操作です。 同じ条件なのに、発生するときとしない時があり、原因がわからないのですが、 objIE.Navigate "http://○○" の時に、 「実行時エラー '-2147024726 (800700aa)': オートメーション エラーです。 要求された リソースは使用中です。" 」 というエラーになり、先に進めない場合があります。 そもそもこのエラーは、何がエラーだといってるのでしょうか?

  • 実行時エラー 2147023179

    win7、エクセル2010でIE操作をしてるのですが どうやらローカルのページ (objIE.Navigate "C:\Users\B\Desktop\a.html") を表示すると、 Do While objIE.Busy = True の部分で、 実行時エラー 2147023179 オートメーションエラーです。 そのインターフェイスは認識されません。 となります。 しかし、 Sub Sample() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "http://login.yahoo.co.jp/config/login?logout=1" 'ログアウトする Do While objIE.Busy = True DoEvents Loop Set objIE = Nothing End Sub このようにネット上のページを表示すると問題なく動きます。 ローカルのページではダメなのでしょうか?

  • 実行時エラー2118

    アクセス2010です。 アクセスVBAのコードで Forms("フォーム1").Controls("サブフォーム").Requery を実行しようとすると 実行時エラー2118 ”Requery/再クエリ”アクションを実行する前に、 カレントフィールドを保存する必要があります。 となります。 VBA実行中に、手作業でデータを修正した事により発生したエラーなのですが そもそもVBA実行中にデータをいじる事は可能なのでしょうか? 出来る時とできない時があります。 更に、上記のエラーが発生しているときは、 VBAが中断の状態で、 そのデータを保存することができません。 データの保存が出来ないと、コードが進まないのですが こういう時はどうすればいいのでしょうか? VBAを停止して、手作業で修正したデータを保存するしかないのでしょうか?

  • VBの記述方法はVBAと同じなのですか?

    これからVisual Studio 2012を導入してVBA(Excel)でやっていたことをVSでやりたいのですが 基本的にVSのVisual Basicの記述方法はVBAと同じなのでしょうか? 例えばネットのあるサイトをログインして遷移後のhtmlを取得するには、VBAだと以下のように書きます。 Dim objIE As Object Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://xxxxxx/login.aspx" objIE.document.All.txt_userid.Value = xxx 'ユーザー名 objIE.document.All.txt_pass.Value = xxx 'パスワード objIE.document.All.btn_login.Click '送信結果のページ読み込みが終わるまでループ While (objIE.Busy = True Or objIE.ReadyState <> 4)  DoEvents Wend '表示したページの<BODY>部のHTMLを取得 Dim htmlBody As String htmlBody = objIE.Document.Body.InnerHtml C#で記述しようか、慣れているVBAと似ているVBで書こうか悩んでいます。 どうぞよろしくお願い致します。

  • VBA 実行時エラー1004 rangeメソッドは

    始めまして、VBA初心者です。 現在VBAプログラムを使って、サイトに自動ログイン出来るようにコードを作成しているのですが、『実行時エラー’1004’rangeメソッドは失敗しました。’_global’オブジェクト』とメッセージが出て、実行できません。 デバックをすると以下の11行目で黄色のバーが出ていました。いろいろと調べてみましたが、原因がわからずに止まってしまいました。 どなかた分かる方がいらっしゃいましたら教えて頂けますようにお願い致します。 コードは下記です。 Sub 無料スペースログイン() Set ObjIE = CreateObject("InternetExplorer.Application") ObjIE.Visible = True ObjIE.Navigate "http://mnnf.jp/signup/" Do While ObjIE.ReadyState <> 4 Do While ObjIE.Busy = True Loop Loop For Each Obj In ObjIE.Document.getElementsByTagName("input") If Obj.Name = "mail" Then ObjIE.Document.getElementsByName("mail")(0).Value = Range("A1").Value Else If Obj.Name = "password" Then ObjIE.Document.getElementsByName("password")(0).Value = Range("B1").Value Else Exit For If Obj.alt = "新規無料登録" Then Obj.Click Exit For End If End If End If Next End Sub

  • 実行時エラー92 forループが初期化されていませ

    エクセルVBAでFor Eachを使ってるのですが、 Nextの部分で 実行時エラー92 forループが初期化されていません。 というエラーになります。 On Error GoTo ERR1 For Each myObj In objIE.Document.all.tags("ul") If myObj.className = "" Then '○○の場合 Exit Sub ERR1: If Err.Number = 424 Then On Error GoTo 0 'エラーを解除 '▲▲の場合 If strカテゴリ Like "" Then Exit Sub End If End If End If Next というコードなのですが、どこかおかしいですか?

  • 実行時エラー’2118’

    アクセスvbaで いつも問題なく動いているコードなのですが 「実行時エラー’2118’ ”Requery/再クエリ”アクションを実行する前に、カレントフィールドを保存する必要があります。」 というエラーが出ます。 エラーが発生するコードは Forms("フォーム1").Controls("SF").Requery です。 中断中のvbe画面でctrl+sで保存をしてみたのですが 変わりません。

  • vbsよりIEをアクティブに開きたい

    お世話になります。 Windows7Pro サーバー上にあるhtmlファイルをvbsより開いてます。 また、5秒で閉じるようにしてます。 現状、vbsを実行するとhtmlファイルが開くことは開くの ですが、他ウィンドウの後ろになってしまいます。 どこをどうすれば開いたhtmlファイル(IE)を最前面で起動 することができますでしょうか。 【vbsの内容】 Option Explicit On Error Resume Next Dim strUrl ' 表示するページ Dim objIE ' IE オブジェクト strUrl = "サーバー上にあるhtmlファイルのパス" Set objIE = WScript.CreateObject("InternetExplorer.Application") objIE.ToolBar = False If Err.Number = 0 Then objIE.Navigate strUrl objIE.Visible = True objIE.Width = 800 objIE.Height = 400 objIE.Top = 0 objIE.Left = 480 WScript.Sleep 5 * 1000 objIE.Quit Else WScript.Echo "エラー:" & Err.Description End If 【htmlの内容】 <html> <head> <title>テスト</title> </head> <BODY> <IMG src="画像のパス"> <font size="7">TEST</font> </div> </body> </html> ご教示の程、宜しくお願い致します。

専門家に質問してみよう