eine Sache fehlt mir noch in meinem Makro neben den verschwindenen Einträge, das Einfügen der Variablen-Inhalte in das Dokument an den entsprechenden Textmarken.
Da weiß ich nun komplett nicht weiter...
Viele Grüße
Lillie

Moderator: Moderatoren
Code: Alles auswählen
oDoc = thisdocument
Dim oBookmark As Object
oBookmark = oDoc.Bookmarks.getByName("Textmarke" )
oBookmarkAnchor = oBookmark.Anchor
oRangeCursor = oDoc.Text.createTextCursorByRange( oBookmarkAnchor )
oRangeCursor.String = stext
Code: Alles auswählen
oDoc.getBookmarks().getByName("Textmarke").getAnchor.setString(
"Text")
Code: Alles auswählen
odoc=thiscomponent
oDoc.getBookmarks().getByName("test").getAnchor.setString("What you want to insert")
Code: Alles auswählen
sub test
dateneintragen("Meintext", "Textmarke")
end Sub
Sub DatenEintragen( stext, sBookMark as String)
oDoc = ThisComponent
On Error Goto Errorhandler
oRangeCursor = JumpToBookmark( oDoc,sBookMark )
oRangeCursor.String = stext
Exit Sub
Errorhandler:
End Sub
Function JumpToBookmark( oDoc As Object, sBookmarkName As String ) As Object
' Jump to the Bookmark and get the Cursor from the selection
Dim oBookmark As Object
oBookmark = oDoc.Bookmarks.getByName(sBookmarkName)
oBookmarkAnchor = oBookmark.Anchor
oRangeCursor = oDoc.Text.createTextCursorByRange( oBookmarkAnchor )
JumpToBookmark = oRangeCursor
End Function
Code: Alles auswählen
Sub Main
Dim oDoc as Object
Dim textFieldEnumeration as Object
Dim currentField as Object
oDoc = thisComponent
textFieldEnumeration = oDoc.getTextFields().createEnumeration()
' loop durch alle Felder
While textFieldEnumeration.hasMoreElements()
currentField = textFieldEnumeration.nextElement()
' test nach dem Variablenname des Feldes
If currentField.VariableName = "Name" then
currentField.Content = "Ein Name über OOBasic gesetzt"
Elseif currentField.VariableName = "Vorname" then
currentField.Content = "Ein Vorname über OOBasic"
Elseif currentField.VariableName = "Strasse" then
currentField.Content = "Eine Strasse über OOBasic"
Else
currentField.Content = "Unbekanntes Feld"
End If
Wend
' wichtig !! Refresh damit die Änderungen
' im Dokument angezeigt werden
oDoc.getTextFields().refresh()
End Sub
Möglicherweise enthält das Dokument TextFields, die keinen VariableNamen haben (Variablenfeld, Format Text, Name und Wert gesetzt?). Hmmm.. Man müsste im COde testen, ob das currentField das Interface unterstützt, welches wir benötigen. Ich werde Dir den entsprechenden Code nachreichen. Inzwischen hab ich Dir was informatives:hakt es jetzt ab:
If currentField.VariableName = "Name" then
Code: Alles auswählen
Sub Main
DisplayMethods( thisComponent, "" )
DisplayMethods( thisComponent, "props" )
DisplayMethods( thisComponent, "interfaces" )
End Sub
Sub DisplayMethods(oObj As Object, SWhat As String)
DIM sMethodList As String, sMsgBox As String
DIM fs, ep As Integer
DIM i As Integer
DIM EOL As Boolean
if sWhat = "" then
sMethodList = oObj.DBG_methods
elseif sWhat = "props" then
sMethodList = oObj.DBG_Properties
else
sMethodList = oObj.DBG_SupportedInterfaces
endif
fs = 1
EOL = FALSE
While fs <= Len(sMethodList)
sMsgBox = ""
For i = 0 to 15
ep = InStr(fs, sMethodList, ";")
if ep = 0 then
ep = Len(sMethodList)
endif
sMsgBox = sMsgBox & Mid$(sMethodList, fs, ep - fs) & Chr$(13)
fs = ep + 1
Next i
MsgBox sMsgBox
Wend
End Sub
Code: Alles auswählen
thisComponent.getBookmarks().getByName("test").getAnchor.setString("What you want to insert")