Seite 1 von 1
(gelöst) Feldbefehl / Datum: Feld ermitteln
Verfasst: Fr, 05.02.2010 11:55
von LokutusvB
Hallo,
ich habe in mein Dokument über Einfügen/Feldbefehl/Datum ein Datum-Feld in ein Dokument eingefügt. Dieses Feld möchte ich mit einem Makro ausfindig machen und editieren. Allerdings ist mir unklar, wie ich das Feld in einem Makro ansprechen kann. Hat dieses Feld überhaupt einen Namen bzw. wie kann ich Name oder ID ermitteln?
Viele Grüße
LvB
Re: Feldbefehl / Datum: Feld ermitteln
Verfasst: So, 07.02.2010 05:30
von komma4
So ein Feld ist ein
TEXTFIELD, bspw. über eine
createEnumeration des Dokuments zu erreichen.
Code: Alles auswählen
oDok = ThisComponent
aTextfelder = oDok.getTextfields.CreateEnumeration
While aTextFelder.hasmoreElements()
CurElement = aTextFelder.NextElement
WEnd
Wenn
CurElement.isDate = TRUE dann kannst Du die
com.sun.star.util.DateTime-Struktur beeinflussen.
Problem: wenn Du mehrere Datum-Felder hast, weisst Du nie, welches Du gerade bearbeitest.
Mein Rat: setze eine Textmarke (
bookmark) in Dein Dokument und fülle den Inhalt zur Laufzeit mit dem Dir genehmen Datum.
Hilft das weiter?
Re: Feldbefehl / Datum: Feld ermitteln
Verfasst: Mo, 08.02.2010 15:39
von LokutusvB
Danke, hast mir sehr geholfen. Hätte nicht gedacht, das diese Felder auch Textfelder sind. Dann hätte ich das gleich über eine Enumeration versucht. Meine Makro schaut nun so aus.
Code: Alles auswählen
Sub Document_Open()
Dim ooDoc as Object
Dim enumTextfelder as Object
Dim aktFeld as Object
ooDoc = ThisComponent
' Datumfeld von Datum auf Datum (fix) setzen
enumTextfelder = ooDoc.getTextfields.CreateEnumeration
While enumTextFelder.hasmoreElements()
aktFeld = enumTextFelder.NextElement
If aktFeld.supportsService("com.sun.star.text.TextField.DateTime") Then
If (aktFeld.IsFixed = False) Then
aktFeld.IsFixed = True
End If
End If
WEnd
End Sub
Allerdings habe ich nun wieder ein anderes Problem. Ich habe unter Anpassen Dokument Öffnen dieses Makro zugeordnet. Warum auch immer, es wird beim Öffnen eines Dokumentes nicht ausgeführt bzw. die mir wichtige Stelle nicht. Liegt das vielleicht daran, das vor dem Datum-Feld noch andere Textfelder sind und diese Dialoge erscheinen? Erst beim manuellen Ausführen des Makros wird es ausgeführt und das Feld ist von Datum auf Datum (fix) gesetzt.
Auf lange Sicht ist deine Lösung mit der Textmarke geplant, bin da schon daran. Kurzfristig allerdings benötige ich die Lösung der Typ-Änderung bei Dokument Öffnen.
Re: Feldbefehl / Datum: Feld ermitteln
Verfasst: Mo, 08.02.2010 15:44
von komma4
Es wird nicht an der Reihenfolge der Felder liegen, aber am Dialog...
Warum setzt Du das Datum nicht in der Vorlage gleich auf FIX - oder bearbeitest Du ein anderes Problem?
Re: Feldbefehl / Datum: Feld ermitteln
Verfasst: Mo, 08.02.2010 15:49
von LokutusvB
Ja, in der Tat, die Ursache liegt wo anders. Ein Delphi-Programm kopiert eine Vorlage und benennt diese um, ändert auch das Format von "ott" zu "odt". Setze ich das Datum auf Fix, wird beim Öffnen der erzeugten Kopie natürlich nicht das aktuelle Datum gesetzt. Leider geht es aus diversen Umständen nicht anders. Langfristig löse ich das über die Textmarken. Jetzt allerdings möchte ich einfach beim ersten Öffnen des neuen Dokumentes das Datum auf fix setzen lassen.
Zusatz: Das Problem, fällt mir gerade ein, könnte ich derweil lösen, indem ich beim Delphi-Programm das Format ändern lasse, da ich beim Öffnen ja sagen kann, was gemacht werden soll und was nicht. Oder aber ich setzte das Makro auf Dokument Schließen, das sollte auch gehen.
Re: Feldbefehl / Datum: Feld ermitteln
Verfasst: Mo, 08.02.2010 16:07
von komma4
Frage: warum "kopiert" Dein Programm eine Vorlage - warum öffnet sie nicht ein neues Dokument aus der Vorlage?
Dann klappt das mit dem Datum-fix...
Re: Feldbefehl / Datum: Feld ermitteln
Verfasst: Mo, 08.02.2010 16:19
von LokutusvB
Gute Frage, nächste Frage, die Wurzeln des Programmes stammen nicht von mir, ich habe es nur erweitert.
Die Verzweigungen des Programmes erfordern diese kopierte und umbenannte Datei in einem gewissen Ordner. Falls also bei der Abarbeitung oder wo auch immer etwas schief geht, muß zumindest die Datei noch vorhanden sein.
Re: Feldbefehl / Datum: Feld ermitteln
Verfasst: Mo, 08.02.2010 16:35
von komma4
öffnen aus Vorlage, speichern unter gewünschtem Namen in erwarteten Ordner. Gut is
Nein... ich kann kein Delphi

Re: Feldbefehl / Datum: Feld ermitteln
Verfasst: Mo, 08.02.2010 17:19
von LokutusvB
Das sagst du so einfach, obwohl du nicht weißt was zwischen dem Kopieren und dem Öffnen des Dokumentes passiert

. In diesem Falle allerdings lässt sich das in die Tat umsetzen.

.