よろずやネット

最近はLibreofficeにハマっています。

オープンオフィスを確実に閉じる

前回のオープンオフィスの開放のコード、Sub DisconnectOpenOffice()ではProcessが残ってしまうことを発見した。
次の方法ではProcessが残らないようだ。


Public Sub DisconnectOSM(Optional ByVal closeOpenOffice As Boolean = False)
    oDispHelper = Nothing
    oDesktop = Nothing
    oSM = Nothing

    GC.Collect()
    GC.WaitForPendingFinalizers()
    GC.Collect()
    GC.WaitForPendingFinalizers()

    If closeOpenOffice Then
        'オープンオフィスを再起動して、確実に閉じる
        Dim ooo As Object, dtp As Object
        ooo = CreateObject("com.sun.star.ServiceManager")
        dtp = ooo.createInstance("com.sun.star.frame.Desktop")
        dtp.terminate()
        dtp = Nothing
        ooo = Nothing
    End If
End Sub

使い方:
Call DisconnectOSM(True)