自動化によって PowerPoint アプリケーションを作成すると、ユーザーがメイン ウィンドウを閉じても、プロセスがタスク マネージャーに残ります。これは、アプリケーションが PowerPoint アプリへの参照を保持しているため、ガベージ コレクションができないためだと推測できます。しかし、ユーザーが PowerPoint アプリケーションを閉じて、そのアプリケーションへのすべての参照を解放できるようにするにはどうすればよいでしょうか? ここはニワトリが先か卵が先かの問題のようです。以下は、フォームの読み込み時に呼び出す関数です。PowerPoint が既に開いている場合は、現在のインスタンスが使用されます。そうでない場合は、新しいインスタンスを作成します。
Private Function TryAttachToApplication() As PowerPoint.Application
Dim app As PowerPoint.Application
Try
app = CType(Marshal.GetActiveObject("PowerPoint.Application"), PowerPoint.Application)
Catch ex As COMException
app = New PowerPoint.Application
End Try
app.Visible = True
Return app
End Function