以下のDimの宣言でVariantにした場合、Set fs = Nothingではメモリ解放されないのでしょうか??
Dim fs As VariantのところをDim fs As Objectにしないとだめでしょうか??
教えてください。
(参考プログラム)
Public Sub Test()
Dim fs As Variant
Set fs = CreateObject("Exce.Application")
:
(省略)
:
Set fs = Nothing
End Sub
fsはObjectとするのが良いと思います。
fs(アプリケーション)の終了には以下手順が良いとかと
If Not fs Is Nothing Then
fs.Quit
Set fs = Nothing
End If
ApplicationにはQuit
BookにはCloseです。
>Set fs = Nothingではメモリ解放されないのでしょうか??
もしこれで動的に確保した領域が開放されるとすれば、この行以降で
Setステートメントで再度インスタンスを生成することができなくなりま
す。メモリが開放されるのは参照カウントが0で、かつ(この場合は)Test
モジュールを終了した以降になります。
参考プログラムではExcelのプロセスをQuitしない限りメモリリークす
ることとなります。
ツイート | ![]() |