Hallo Martin,
die Fehlermeldung
BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.lang.IndexOutOfBoundsException
Message: .
besagt wohl, dass via "thisF = oTF.getByIndex(i)" ein Element indiziert wird, dass es bezüglich des Index nicht (mehr) gibt.
Ich vermute mal, dass durch das FRAME-Löschen ( thisF.dispose() ) der letzte Index ( bezüglich "oTF.getByIndex(i)" ) immer um 1 vermindert wird, die Schleife aber "zu weit" zählt.
Entschuldige bitte die etwas "holprige" Erläuterung, aber bezüglich "FRAMEs löschen" habe ich keinerlei Erfahrung.
Lässt man die Schleife rückwärts laufen ( For i = c to 0 Step -1 ) funktioniert das Makro. Ich hatte über [Einfügen]>[Rahmen]>[Rahmen interaktiv] 3 Rahmen in eine WRITER-Dokument eingefügt und jeweils mit Text gefüllt. Nach Makro-Ausführung waren die Rahmen weg und der Text direkt nacheinander in mehreren Zeilen aufgelistet:
Sub DeleteFrameSaveText
oDoc =ThisComponent
oTF = oDoc.getTextFrames
c = oTF.Count - 1
For i = c to 0 Step -1
thisF = oTF.getByIndex(i)
s = thisF.String
otc = oDoc.Text.createTextCursorByRange(thisF.Anchor)
otc.setString(s)
thisF.dispose()
Next
End Sub
Gruß
Hans-Werner ;-))