一部のデータをスクレイピングする VBA マクロ スクリプトがあります。MSIEを使用してスクレイピングしています.MSIEがメモリリークの中心的な問題であると思います。
次のように変数を初期化しています
Set IE = CreateObject("InternetExplorer.Application")
メモリがどのように使用されているかを確認するために、少しテストを行いました。
IE のインスタンスを 1 つだけ作成し、同じ Web サイトに ping を送信するループを作成しました。メモリはリークしていないようです。
次に、常に別のサイトにpingを実行するループを作成し、リクエストごとにメモリ使用量が増加し始めました。
また、反復ごとに新しいオブジェクトを作成し、最後に削除するテストも作成しました(以下に投稿しています)。削除部分が機能していないようです。
IE のインスタンスがリクエストをキャッシュしているように見えるため、オブジェクトが大きくなっています。これは単なる仮定です。
リークをテストするために使用したサンプル コードを次に示します。
Do While True
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Navigate "https://www.google.hr/#hl=hr&gs_nf=1&cp=3&gs_id=8&xhr=t&q=" & Counter
IE.Visible = True
Do While IE.readyState <> 4 Or IE.Busy = True
Application.Wait Now() + TimeValue("00:00:01")
DoEvents
Loop
Application.Wait Now() + TimeValue("00:00:01")
Counter = Counter + 1
Range("A" & Counter).Value = "https://www.google.hr/#hl=hr&gs_nf=1&cp=3&gs_id=8&xhr=t&q=" & Counter
IE.Quit
Set IE = Nothing
Loop
どんな入力でも素晴らしいでしょう!