VBA / Excel 2000でガベージコレクションを強制する方法はありますか?
この質問は、Excelのマクロ言語に関するものです。Excelを操作するためにVB.NETを使用していません。したがって、GC.collect()は機能しません
VBA / Excel 2000でガベージコレクションを強制する方法はありますか?
この質問は、Excelのマクロ言語に関するものです。Excelを操作するためにVB.NETを使用していません。したがって、GC.collect()は機能しません
ストレートVBAを使用する場合、.NETFrameworkによって提供されるガベージコレクションを利用することはできません。おそらく、EricLippertによるこの記事が役立つでしょう
VBAでGCを強制することはできませんが、グローバル変数を[なし]に設定することをお勧めします。
kd7が言及した記事では、スコープ外になる前にローカル変数をNothingに設定するのは無意味であると述べていますが、グローバル変数については説明していません。
VBAでは、モジュールで定義されたグローバル変数は、Excelセッション全体を通して、つまり、それらを定義するVBAモジュールを含むドキュメントが閉じられるまで存続します。
Set O = Nothing
したがって、Oがローカルの場合は無駄にしないでください。ただし、グローバルの場合はそれを行ってください。
VBA / Excelには、古いVBのようなガベージコレクションはありません。GCの代わりに、参照カウントを使用します。ポインタを何にも設定しない場合(または変数がスコープ外になる場合)、メモリは解放されます。古いVBと同様に、循環参照が解放されることはありません。