[ad_1]
多数の Excel ファイルからデータを抽出しています。
ファイルを開いたり閉じたりするたびに、ファイルからデータを保存しなくても、メモリはどんどん小さくなります。
ファイルを閉じても、多くの VBAproject がメモリに残っていることに気付きました。 ファイルを完全に閉じて、VBAproject のメモリを解放するにはどうすればよいですか?
Sub Main() Dim info, analyse As Variant Dim i, n As Integer Beep Dim colFiles As Collection, f, wb As Workbook Application.ScreenUpdating = False Set colFiles = GetMatches("c:\Users\Documents\Analyseenhed\LIMS_2022\", "*Resultat*.xlsx") n = colFiles.Count i = 0 For Each f In colFiles Set wb = Workbooks.Open(f.path, UpdateLinks:=False, ReadOnly:=True) wb.Close WB=nothing Debug.Print i & " of " & n & " " & GetMemory i = i + 1 Next f End Sub Function GetMemory() Dim oInstance As Object, colInstances As Object Dim totalMem As Single, availMem As Single Set colInstances = GetObject("winmgmts:").ExecQuery("SELECT * FROM Win32_PhysicalMemory") For Each oInstance In colInstances totalMem = totalMem + oInstance.Capacity / 1024 / 1024 Next Set colInstances = GetObject("winmgmts:").ExecQuery("SELECT * FROM Win32_OperatingSystem") For Each oInstance In colInstances availMem = availMem + oInstance.FreePhysicalMemory / 1024 Next GetMemory = Round(availMem / totalMem * 100, 1) Set colInstances = Nothing Set oInstance = Nothing End Function
私が試したこと:
ファイルを閉じて wb オブジェクトを何も設定しませんでした
解決策 1
開いたファイルの VBA プロジェクトがまだ表示されている場合は、実際には閉じていません。
VB
wb.Close WB=nothing
奇妙に見えます。 WB
自動的に調整する必要がありました wb
その2行目は「オブジェクトが必要です」というエラーをスローする必要がありました。 代わりに試す
VB
wb.Close Set wb=nothing
もう 1 つの方法として、ワークブックを開いたり閉じたりする代わりに、Power Query を使用してデータを抽出 (および結合) してみませんか?
解決策 2
[ad_2]
コメント