Hallo,
ich möchte in LO ein neues Dokument anhand einer, in die Vorlagenverwaltung integrierten, Dokumentvorlage erstellen. Dazu soll vorab die Vorlage durch den Anwender auswählbar sein.
Gibt es in LO irgendeine Möglichkeit auf den Vorlagendialog (Datei-Neu-Vorlagen...) per Makro zuzugreifen und die gewählte Vorlage 'abzufangen'? WAs ich brauche ist das Dokumentobjekt des neuen Dokuments.
Mir ist klar das ich in der Vorlage ein Ereignis (Extras-Anpassen) definieren kann was ein Makro startet wenn ein neues Dokument erstellt wird das auf dieser Vorlage basiert, nur das scheint mit für den Routinebetrieb zu unsicher und setzt außerdem Voraus das ich in den Vorlagen vorher dieses Ereignis definiere.
Hat jemand einen Rat?
Ich sehe bisher nur die Möglichkeit umständlich selbst einen Dialog zu programmieren in welchem die Vorlagen auswählbar sind. Das ist aufwändig und wird optisch immer anders aussehen als der Originaldialog, weil die Programmiermöglichkeiten (zumindest per Basic) zu begrenzt sind.
Den vorhandenen Dialog zu nutzen wäre hingegen optimal und ich hoffe jetzt das beim neuen Vorlagendialog von LO vielleicht eine Zugriffsmöglichkeit bestehen könnte.
Mit "neuen Vorlagendialog" meine ich:
Gruß
Stephan
[LibreOffice] Vorlagenverwaltung - Neues Dokument - Zugriff per Makro?
Moderator: Moderatoren
Re: [LibreOffice] Vorlagenverwaltung - Neues Dokument - Zugriff per Makro?
Der Begriff "Vorlagendialog" wird von Dir nicht präzise gehandhabt.
Denn was willst Du? Eine neue Vorlage selbst erstellen und dann in den Katalog einbauen oder eine fremde Vorlage in den Katalog einbauen oder eine eigene aus einem Dokument in den Katalog einbauen. Alles das geht.
Unter Datei->Vorlagen->Vorlagen verwalten offnet sich der Vorlagenmanager. Und da sind zwei interessante Dinge: rechts unten Importieren und links unten der zweite Knopf Online-Vorlagen durchstöbern
Denn was willst Du? Eine neue Vorlage selbst erstellen und dann in den Katalog einbauen oder eine fremde Vorlage in den Katalog einbauen oder eine eigene aus einem Dokument in den Katalog einbauen. Alles das geht.
Unter Datei->Vorlagen->Vorlagen verwalten offnet sich der Vorlagenmanager. Und da sind zwei interessante Dinge: rechts unten Importieren und links unten der zweite Knopf Online-Vorlagen durchstöbern
win11 - Avira - LO 7.6.6.3 (X86_64) - AOO 4.1.15
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
Re: [LibreOffice] Vorlagenverwaltung - Neues Dokument - Zugriff per Makro?
Die Rückgabe (den Event) des Vorlagensdialogs abfangen.Denn was willst Du?
Im Standardfall [1] würde eine Vorlage gewählt und ein neues Dokument, basierend auf dieser Vorlage erzeugt, und von diesem Dokument brauche ich den Namen der Vorlage (oder gerne auch das Dokumentobjekt in einer Variable).
Ob das möglich ist weiß ich nicht, nur ich hoffe das LO das für den neuen Vorlagendialog implementiert haben könnte.
[1]
Der Anwender kann alternativ z.B. den Dialog auch wieder schließen oder etwas Alternatives tun, z.B. eine Vorläge zum Bearbeiten/Ändern öffnen
Gruß
Stephan
Re: [LibreOffice] Vorlagenverwaltung - Neues Dokument - Zugriff per Makro?
Ich habe jetzt folgende Lösung gefunden:
-es wird zunächst, anhand der Titel, registriert welche Fenster/Dokumente offen sind
-nun wird der Dialog zur Auswahl einer Vorlage geöffnet, dort eine neue Dokumentvorlage gewählt und darauf basierend ein neues Dokument erstellt
-jetzt wird geprüft welche FEnster nun offen sind um, im Vergleich mit der ersten Prüfung, das eine Fenster zu finden das dem neuen Dokument entspricht (hierbei wird auch der Sonderfall berücksichtigt das die Vorlage (fälschlich) zum Bearbeiten geöffnet wurde, denn dieses Dokument hat bereits eine Speicheradresse, ein neues Dokument noch nicht)
-das Dokument kann nun wie gewöhnlich bearbeitet werden
der Code sieht so aus:
Gruß
Stephan
-es wird zunächst, anhand der Titel, registriert welche Fenster/Dokumente offen sind
-nun wird der Dialog zur Auswahl einer Vorlage geöffnet, dort eine neue Dokumentvorlage gewählt und darauf basierend ein neues Dokument erstellt
-jetzt wird geprüft welche FEnster nun offen sind um, im Vergleich mit der ersten Prüfung, das eine Fenster zu finden das dem neuen Dokument entspricht (hierbei wird auch der Sonderfall berücksichtigt das die Vorlage (fälschlich) zum Bearbeiten geöffnet wurde, denn dieses Dokument hat bereits eine Speicheradresse, ein neues Dokument noch nicht)
-das Dokument kann nun wie gewöhnlich bearbeitet werden
der Code sieht so aus:
Code: Alles auswählen
Sub neues_Dokument_erstellen()
'bestimmen welche Fenster/Dokumente offen
Redim alle_Titel(StarDesktop.Frames.Count-1)
For i = 0 To UBOUND(alle_Titel())
alle_Titel(i) = StarDesktop.Frames(i).title
Next i
vorlagenverwaltung_oeffnen()
If StarDesktop.Frames.Count-1 > UBOUND(alle_Titel()) Then
For i = 0 To StarDesktop.Frames.Count-1
titel_gefunden = 0
For j = 0 To UBOUND(alle_Titel())
If StarDesktop.Frames(i).title = alle_Titel(j) Then
titel_gefunden = 1
Exit For
End If
Next j
If titel_gefunden = 0 Then 'wir haben das neue Fenster gefunden
'unterscheiden ob neues Dokument oder (fälschlich) Vorlage zum Bearbeiten geöffnet
Select Case StarDesktop.Frames(i).getCreator.getCurrentComponent.hasLocation()
Case True
'Vorlage ist zum Bearbeiten geöffnet
Case False
'es existiert ein neues Dokument, jetzt weiteres Bearbeiten durchführen:
'...
End Select
Exit For
End If
Next i
Else
'es wurde kein neues Fenster erzeugt, deshalb nichts zu tun
End If
End Sub
sub vorlagenverwaltung_oeffnen()
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:NewDoc", "", 0, Array())
end Sub
Gruß
Stephan