Ja, und leider schließt Document.Close() die vollständige Open Office-Instanz. Ich habe ein wenig im Netz gesucht, konnte aber noch nichts passendes finden. Neben Close gibt es wohl noch .dispose() und der ganz harte Weg .terminate. Beides nützt mir aber nichts.
In jedem Fall sollte ein dispatch mit CloseDoc möglich sein:
Code: Alles auswählen
sub schliessen()
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:CloseDoc", "", 0, Array())
end sub
Ich möchte gern, wenn Open Office schon geöffnet ist ohne ein geladenes Dokument (eben nur Open Office) in diese Instanz das Dokument öffnen. Das geht, wenn ich das richtig verstehe, über LoadComponentFromURL(...'_blank'...), dann aber eben nicht blank, sondern ein anderes Attribut (default oder self?).
Kann es sein das Du hier "Instanz" mit "Frame" (meinethalben auch "Fenster") verwechselt? Alles was Du hier schreibst sollte nämlich automatisch richtig laufen, nur ist OOo nun mal keine MDI-Anwendung und erzeugt somit für jedes neue Dokument ein neues Fenster/Frame, was aber KEINE neue Instanz ist.
Wie Du hingegen Dokumente in einen bestehenden FRame lädst dürfte (glaube ich) in dem Makrodokument von Pitoniak stehen, siehe erster Thread hier im Basic-Forum.
Gruß
Stephan