ich bin echt abgenervt und OOo frustriert wieder ein ganzer Tag sinnloses Basic gepfriemel ?
Nach dem du mir die funktionierenden Code-schnipsel für copy 'n' paste gezeigt hast, hatte ich vergleichsweise schnell mein Makro soweit, dass es mit vielen "print " hier passiert gerade dies oder das " " durch lief und das tat was ich mir vorgestellt hatte


Dann ging ich voller Freude ans aufräumen mit zwischenzeitlichen Versuchen ob noch immer alles läuft, nach dem ich als letztes die ganzen "prints" heraus gelöscht hatte und ich nun endlich den Lohn der tagelangen Arbeite sehen wollte, nämlich ein zügig durchlaufendes Makro das mir in Zukunft, das erstellen meiner Writer/PDF.doc erheblich erleichtern sollte.
Stattdessen gab es nun die ganz derbe Enttäuschung nichts funktionierte und das Makro hat in Höchstgeschwindigkeit das Dokument zerlegt bzw alles gelöscht was eigentlich kopiert werden sollte ........ so eine Ka..e !
Ich dachte ich hätte versehentlich irgend etwas wichtiges gelöscht, naja nicht ganz so schlimm, fix ein paar mal ctrl+z in dem Basic Fenster und dann ist beim 5. oder 6. Mal ist OO abgestürzt/eingefroren nach 10 Min 100% CPU Last war der Reset angesagt.
Nach Restart und wiederherstellen war der MakroCode natürlich im Ars..
Also Stunden damit verbracht den Code wieder hinzu pfriemeln keine Chance bis ich angefangen habe wieder die "print " blabla "" vor jeden Befehl zu setzen.
Irgendwann lief es wieder. Also da dachte ich hmm vielleicht ein Zeitproblem also alle "print" durch "wait 500" ersetzt Pustekuchen nix wieder alles weg !
Das gibt's doch nicht alle "wait 500" durch "wait 4000" ersetzt nun konnte ich beobachten, wie der Tabellentexte markiert, kopiert, Tabelle entfernt und der Text aus der Zwischenablage rot formatiert eingefügt wurde und dann wieder verschwand !? was geht denn da ab ?
Dann habe ich die "wait xxxx" wieder durch "print "blabla"" ersetzt und siehe da es tut wieder !
Nun bleibt mir nur noch die Vermutung, durch das löschen der Tabellen kommt der Cursor ins schleudern und vergisst wo er ist und vor allem wo er sein sollte ! , wenn nicht durch das anklicken der PrintFenster der Cusor wieder in das Dokument gesetzt wird !?
hier ist der rudimentäre Code.
Code: Alles auswählen
Option Explicit
Sub changetab2text_new
Dim oDoc, oTable, oCurs, mytextCursor, myViewCursor, oPar, myCell, oDispatch, oDocument as Object
Dim CellString as String
Dim oText
Dim Anzahl, Anzahl2, i as Integer
oDoc = Thiscomponent
Anzahl = ThisComponent.getTextTables().getCount
print anzahl
for i = 0 to Anzahl -1
oTable = ThisComponent.getTextTables().getByIndex(0)
myCell = oTable.getCellByPosition(1,0)
' myCell = oTable.getCellByName("B1")
CellString = myCell.string
if CellString =" next Page " then
CellString = "ENDE"
myCell.string = CellString
' oCurs.string = CellString
oCurs = ThisComponent.getCurrentController().getViewCursor()
ThisComponent.getCurrentController().select(mycell)
oCurs.gotoEnd(true)
oCurs.CharColor = 12910603
print " jump to nextstep1 "
goto nextstep1
end if
oCurs = ThisComponent.getCurrentController().getViewCursor()
ThisComponent.getCurrentController().select(mycell)
oCurs.gotoEnd(true)
oCurs.CharColor = 12910603
oCurs.ParaLeftMargin = 499
oCurs.ParaRightMargin = 499
nextstep1:
oDocument = thisComponent
oDispatch = createUnoService("com.sun.star.frame.DispatchHelper")
oDoc = ThisComponent.CurrentController.Frame
oDispatch.executeDispatch(oDoc, ".uno:Copy", "", 0, Array())
oCurs.gotoStart(True)
oCurs.goleft(1,False)
wait 2000
'print " Tabelle löschen "
oTable.dispose
wait 2000
'print " neuen Absatz einfügen "
oDocument.Text.insertControlCharacter(oCurs,com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK, false)
oDispatch = createUnoService("com.sun.star.frame.DispatchHelper")
oDoc = ThisComponent.CurrentController.Frame
oDispatch.executeDispatch(oDoc, ".uno:Paste", "", 0, Array())
wait 2000
'print "wurde der neue Absatz eingefügt ? "
next
End Sub
sonst werd ich noch zum Tier und werf den Rechner noch aus dem Fenster................