Hallo,
kann man die Werte von Variablen, welche man als Feldbefehle im Dokument erstellt hat, per Makro ändern?
Im Handbuch habe ich was von textfields gefunden, aber die beziehen sich auf OO-Variablen wie 'aktuelle Seitennummer'
Danke und Gruss,
Lenu
Variablen
Moderator: Moderatoren
Hey Lenu,
nicht ganz ohne, aber hier ein kurzer Code, wie du ein existierendes Benutzerfeld mit Namen "TestFeld" und dem Inhalt "Hallo" als Text ansprechen und somit auch ändern kannst. Groß- und Kleinschreibung beim Namen beachten!
bis denn
Thomas
nicht ganz ohne, aber hier ein kurzer Code, wie du ein existierendes Benutzerfeld mit Namen "TestFeld" und dem Inhalt "Hallo" als Text ansprechen und somit auch ändern kannst. Groß- und Kleinschreibung beim Namen beachten!
Code: Alles auswählen
Sub TextFeldansprechen
DIM oMasters as Object
DIM oFeld as object ' das Textfeld
oMasters = ThisComponent.getTextFieldMasters()
oFeld = oMasters.getByName("com.sun.star.text.FieldMaster.User.TestFeld")
msgbox oFeld.name
msgbox oFeld.content
End Sub
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Hallo Thomas,
das klappt ganz wunderbar, mitkann ich den Inhalt ändern.
Weisst Du jetzt auch noch, wie man die Felder aktualisieren kann? Ich habe versucht den F9-Aufruf als Makro aufzuzeichnen, geht aber nicht.
Vielen Dank,
Lenu
das klappt ganz wunderbar, mit
Code: Alles auswählen
oFeld.content = "irgendwas"
Weisst Du jetzt auch noch, wie man die Felder aktualisieren kann? Ich habe versucht den F9-Aufruf als Makro aufzuzeichnen, geht aber nicht.
Vielen Dank,
Lenu
Hey Lenu,
Also füge einfach die folgende Zeile in den Code ein:
Im übrigen funktioniert natürlich auch die Makroaufzeichnung. Die erzeugt Dispatchercode, der wie folgt aussehen sollte:
Je nach Version, mit der du arbeitest, ist sich OOo aber nicht ganz sicher und kommentiert die entscheidende Zeile (die letzte) in der Regel mit "REM" aus. Es funktioniert aber trotzdem - also einfach das REM entfernen, fertig.
Gruss
Thomas
Klar. Aber ich kann ja nicht immer gleich alles verratenWeisst Du jetzt auch noch, wie man die Felder aktualisieren kann?

Also füge einfach die folgende Zeile in den Code ein:
Code: Alles auswählen
thisComponent.textfields.refresh()
Code: Alles auswählen
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:UpdateFields", "", 0, Array())
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic