ExcelのVBAでメモリ解放できない
以下のようなプログラムで、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