ich würde gern ein Textfeld per Makro mit Text füllen.
Meine Spur bislang wäre:
Code: Alles auswählen
ThisComponent.GetTextFields
Vielleicht mache ich einfach etwas falsch?
Habt ihr eine Idee?
Moderator: Moderatoren
Code: Alles auswählen
ThisComponent.GetTextFields
Das ist nicht unlogisch! Wie soll das funktionierern, wenn du beispielsweise das Feld "Author" 10 mal im Dokument einfügst. Welches soll dann gefunden werden?Die Option GetByName scheint es hier unlogischerweise nicht zu geben
Code: Alles auswählen
oTextFieldCon = thisComponet.getTextFields
Code: Alles auswählen
oTextFields = oTextFieldCon.createEnumeration()
Code: Alles auswählen
Do while oTextFields.hasMoreElements()
oTextFeld = oTextFields.nextElement()
.... REM hier folgt der Code, die Textfelder auszuwählen
loop
Code: Alles auswählen
if oTextFeld.supportsService("com.sun.star.text.TextField.Author") then
...REM jetzt kannst du irgend etwa tun
exit do 'Schleife beenden
end if
Code: Alles auswählen
Dim oDoc As Object
Dim oTextfelder As Object
Dim oTextfeld As Object
oDoc = ThisComponent
oDoc.GetTextFields.CreateEnumeration()
Do while oTextfelder.HasMoreElements()
oTextfeld = oTextfelder.NextElement()
If oTextfeld.SupportsService("com.sun.star.text.TextField.Titel") Then
oTextfeld.Content = Vorlage(1)
Exit Do
End If
Loop
Nein. Bei der Varainte spielt das keine Rolle.Liegt es evtl. daran, dass das Textfeld in der Kopfzeile ist?
Der Fehler liegt hier. "Titel" ist eben gerade kein einfaches Textfeld, sondern ein abgeleitetes aus dem Hauptobjekt "docinfo". Diese Feld erhälst du dann wie folgt:"Titel" ist der Name des Textfeldes und wird wie oben aufgerufen oder nicht?
Code: Alles auswählen
oTextfeld.SupportsService("com.sun.star.text.TextField.DocInfo.Title")
Code: Alles auswählen
msgbox oTextfeld.content
Code: Alles auswählen
Dim oDoc As Object
Dim oTextfelder As Object
Dim oTextfeld As Object
oDoc = ThisComponent
oTextfelder = oDoc.GetTextFields.CreateEnumeration()
Do while oTextfelder.HasMoreElements()
oTextfeld = oTextfelder.NextElement()
If oTextfeld.SupportsService("com.sun.star.text.TextField.DocInfo.Title") Then
msgbox oTextfeld.Content
Exit Do
End If
Loop
Code: Alles auswählen
oDoc = thisComponent
oDoc.Title = "Das ist mein gesetzter Titel des Docs"
Code: Alles auswählen
oDoc.Title = "Das ist mein gesetzter Titel des Docs"
Code: Alles auswählen
oDoc.DocumentInfo.Title = "Das ist mein gesetzter Titel des Docs"
Code: Alles auswählen
oDocument.DocumentInfo.Title = "Meine Titel"
Na, das ist ja etwas ganz anderes. Soche "Textfelder" sind in Wirklichkeit einfache Zeichnungsobjekte (Shapes) mit bestimmten Eigenschaften, und diese sind alles Objekte der DrawPage.Es geht um die Textfelder als Zeichnungsobjekte
Code: Alles auswählen
Sub TextFeldGrafik
oDoc = thisComponent
oDraw = oDoc.getDrawPage()
for i = 0 to oDraw.count-1
oShape = oDraw.getByIndex(i)
msgbox oShape.getString()
oShape.setString("Hey")
next
End Sub