Aloha
Wofür iterierst Du über alle TextFrames?
Nehmen wir an, Du hast 4 Textframes (TextFrame1-4) und jeweils eine Textmarke darin (Bookmark1-4).
Nehmen wir weiterhin an, Du willst jetzt "meineTextmarke1" (sTextmarkeName) füllen mit "meinText" (sTextmarkeString).
Nun iterierst Du über alle Textframes, also insgesamt 4 Mal und sprichst hier
Code: Alles auswählen
oTextmarke = oDoc.Bookmarks.getByName(sTextmarkeName)
oBookmark = oDoc.getBookmarks().getByName(sTextmarkeName).getAnchor
if not isEmpty(oBookmark.TextFrame) then
oCursor = oBookmark.Text.CreateTextCursorByRange(oTextmarke.Anchor)
oCursor.String = sTextmarkeString
end If
in jedem einzelnen Schleifendurchlauf die gleiche Textmarke an, nämlich "meineTextmarke1" und schreibst entsprechend in jedem einzelnen Schleifendurchlauf in den gleichen TextFrame (nämlich den von "meineTextmarke1") den Text "meinText".
Entweder Du baust in Deinen Code eine Abbruchbedingung ein, sobald Du die Textmarke befüllt hast
Code: Alles auswählen
if not isEmpty(oBookmark.TextFrame) then
oCursor = oBookmark.Text.CreateTextCursorByRange(oTextmarke.Anchor)
oCursor.String = sTextmarkeString
exit sub 'Arbeit getan
end If
oder, noch viel klüger, Du sparst Dir die überflüssige Schleife über alle Textframes.
Code: Alles auswählen
Sub TextmarkeStringZuordnenFrame
'***************************************
'*Nach Textmarke in Framevorlage suchen*
'***************************************
If oDoc.getBookmarks().hasByName(sTextmarkeName) = True Then
oBookmark = oDoc.getBookmarks().getByName(sTextmarkeName).getAnchor
if not isEmpty(oBookmark.TextFrame) then
oCursor = oBookmark.Text.CreateTextCursorByRange(oTextmarke.Anchor)
oCursor.String = sTextmarkeString
end If
end if
End Sub