Hallo zusammen,
ich möchte per Makro Inputfelder (werden insges. ca. 10 verschiedene) im geöffneten (Writer-) Dokument füllen, und zwar mit Strings, die das Makro per Kommandozeile übergeben bekommt. Was ich bereits geschafft habe ist das entsprechende Dokument zu öffnen und dieses als PDF abzuspeichern. Nur habe ich keinen Plan wie ich die Inputfelder ansprechen bzw. füllen kann bzw. über welche Methode ich die Inputfelder vorher überhaupt einbinden muss in mein Dokument (habe da von 2 versch. Methoden gelesen).
Da ich absoluter Anfänger im Bereich Open Office Basic bin, bin ich für jede Hilfestellung dankbar.
Vielen Dank und viele Grüße,
oSIRus
Inputfelder per Makro füllen
Moderator: Moderatoren
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Inputfelder per Makro füllen
oSIRus,
zwei Möglichkeiten:
Das ersetzt das Eingabefeld durch den angegebenen Text. Damit entfallen aber die Eigenschaften des Eingabefeldes (Name, Hinweistext, Feldhinterlegung, Mauscursor-Änderung, etc.)
Eine andere Möglichkeit habe ich hier** gefunden:
** Anpassung der Variablen-Namen auf dieses Beispiel durch mich
Das erzeugt an gleicher Stelle ein neues Eingabefeld mit dem gewünschten Inhalt. Hier fehlen dann noch Code-Teile zum Sichern und Übernehmen evtl. gesetzter Eigenschaften (Name, Hinweis, ...?), falls das Eingabefeld "wie zuvor" erhalten bleiben soll.
Hilft Dir das weiter?
zwei Möglichkeiten:
Code: Alles auswählen
Sub writer_setEingabefeldNeu
vEnum = thisComponent.getTextFields().createEnumeration()
If Not IsNull(vEnum) Then
Do While vEnum.hasMoreElements()
vVal = vEnum.nextElement()
if vVal.supportsService("com.sun.star.text.TextField.Input") then
vVal.getAnchor().String = "neu"
end if
Loop
End if
End Sub
Eine andere Möglichkeit habe ich hier** gefunden:
Code: Alles auswählen
Sub writer_setEingabefeldReplace
vEnum = thisComponent.getTextFields().createEnumeration()
If Not IsNull(vEnum) Then
Do While vEnum.hasMoreElements()
vVal = vEnum.nextElement()
if vVal.supportsService("com.sun.star.text.TextField.Input") then
range = vVal.getAnchor()
InputField = ThisComponent.createInstance("com.sun.star.text.TextField.Input")
InputField.Content = "<your textcontent>"
ThisComponent.Text.insertTextContent(range, InputField, False)
ThisComponent.Text.removeTextContent( vVal )
end if
Loop
End if
End Sub
Das erzeugt an gleicher Stelle ein neues Eingabefeld mit dem gewünschten Inhalt. Hier fehlen dann noch Code-Teile zum Sichern und Übernehmen evtl. gesetzter Eigenschaften (Name, Hinweis, ...?), falls das Eingabefeld "wie zuvor" erhalten bleiben soll.
Hilft Dir das weiter?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)