
以下のようなプログラムで、ExcelVBAで作成しております、Webの情報を取得しております。
strGetUrl のところのサイトによっては、メモリが解放できず困っています。
Whileで繰り返すほど、メモリを消費して解放されません。メモリいっぱいになれば解放してくれるのかと思いましたが、止まってしまいました。2回目はOSを壊して再インストールしてもらいました(VPS上で)。
困っております。オブジェクトも”Set xxxx = Nothing”で解放しているつもりです。
考えられる理由をご教授頂けると幸いです。
環境は
OSはWindowsServer2008R2
IEはIE8
でVPSなので変更不可と言われました。
ちなみに、Windows8.1の環境ではメモリが溜まっていくことはなかったです。
何か良い方法はありますでしょうか?
また、別のWebアクセス方法はありますでしょうか?
IE = CreateObject("InternetExplorer.Application")は同じ結果でした。
以下のプログラムでサイトにもよりますが、発生しています。
***********************************
Option Explicit
Sub testHtml()
Dim doc As Object, objTag1 As Object, objTag2 As Object
Dim oHttp As Object
Dim strUrl As String, strGetUrl As String
Dim rowIndex As Integer
' 基本URL設定
strGetUrl = "http://www.xxxx.xxx.com"
rowIndex = 1
'1列目が1行づつ進めてが空になったら終了
While Cells(rowIndex, 1).Value <> ""
Set oHttp = CreateObject("MSXML2.XMLHTTP")
Set doc = CreateObject("htmlfile")
' *************** HTTPヘッダの作成し、送信してデータを取得 *****************
With oHttp
.Open "GET", strGetUrl, False
.Send
' 受信したデータをオブジェクトに書き込みます。
doc.Write .responseText
End With
' *************** 受信データを解析し、H2データ取得に分割 *****************
For Each objTag1 In doc.body.getElementsByTagName("H2")
If objTag1.className = "resultCount" Then
Cells(rowIndex, 2).Value = objTag1.innerText
End If
Next
' Objectの解放
Set objTag1 = Nothing
Set objTag2 = Nothing
Set doc = Nothing
Set oHttp = Nothing
rowIndex = rowIndex + 1
Wend
End Sub
No.1ベストアンサー
- 回答日時:
対策としては、CreateObjectを繰り返さない。
CreateObjectで作成したオブジェクトを使いまわす。
http://www.ken3.org/guchi/backno/guchi205.html
この回答への補足
連絡ありがとうございました。ただ、解決しなかったので、OSをWindowsServer2012にバージョンアップすれば問題は発生しませんでした。参考まで追記しておきます。
補足日時:2014/02/23 20:20ありがとうございます。
良いアドバイスだと思いましたが、一応、試してみましたが、うまくいきませんでした。
もう少し調べてみます。
情報ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
このQ&Aを見た人はこんなQ&Aも見ています
-
EXCELのVBAで作業ファイルを閉じてもメモリの解放をしなくて困っています
Excel(エクセル)
-
EXCEL VBA マクロ 実行する度に処理速度がどんどん遅くなる原因が知りたい
Excel(エクセル)
-
DoEventsが必要な理由について
Visual Basic(VBA)
-
-
4
【Excel VBA】 WorksheetやRangeオブジェクトとして宣言した変数の開放は必要でしょうか?
その他(Microsoft Office)
-
5
vba メモリーリーク
Visual Basic(VBA)
-
6
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
7
配列をEraseしてもメモリが開放されていない?
Visual Basic(VBA)
-
8
VBAでFormat がうまく使えない
Excel(エクセル)
-
9
Excel VBAが徐々に遅くなる
Excel(エクセル)
-
10
'Range'メソッドは失敗しました
Excel(エクセル)
-
11
エクセルVBAが途中で止まります
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
メモリが不足しています(VBA)
-
VBAの配列サイズとメモリに関して
-
ExitProcessの関数コールについ...
-
C言語で、メモリを解放しないで...
-
大量件数のINSERT or UPDATE を...
-
メモリを解放しないとどうなる?
-
C,C++プログラムの強制終了時の...
-
4GB搭載したマシンのメモリ情...
-
【C言語】再帰が時間がかかる...
-
Bitmapを重ね合わせる方法
-
クリスタルレポートでメモリ不...
-
メモリ不足
-
スタック領域を変更するには
-
ルネサスマイコン(R8C) ビルド...
-
「memcpy」と「strcpy」について
-
直接メモリにアドレス割付けで...
-
ファミコンって8ビットしかない...
-
ReadEventLogについて
-
大容量のメモリ確保をスワップ...
-
「ヒープサイズの設定」て何?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAの配列サイズとメモリに関して
-
C言語で、メモリを解放しないで...
-
メモリ不足
-
メモリが不足しています(VBA)
-
「ヒープサイズの設定」て何?
-
メモリのセグメント違反の解決...
-
バッチファイルでの実行EXEのメ...
-
VB.netでUSBメモリの固有I...
-
EXCEL-VBAにてADOのレコードセ...
-
エクセルのメモリ使用状況/Appl...
-
「memcpy」と「strcpy」について
-
エクセルVBA 大容量CSVファイル...
-
ファイルマッピング関数で失敗
-
大容量のメモリ確保をスワップ...
-
GetAdapterInfoによりマックア...
-
C言語における再帰呼び出しの...
-
C++のCopyFileでメモリが増える
-
メモリを解放しないとどうなる?
-
クリスタルレポートでメモリ不...
-
closeとメモリの開放について
おすすめ情報