Moin Leutz, Moin Turtle47,
ist schon merkwürdig mit dem copy teil aus deinem letzten Beispiel hat das copy auf Anhieb funktioniert !?
obwohl ich auch bei genauester Betrachtung keinen Unterschied zu meinem Codeteil ausmachen konnte .........
möglicherweise gab es da ein Problem mit der Zwischenablage ich weiß jetzt nur nicht genau ob mit meiner oder der von Windows
An sich, funktioniert das "copy 'n' paste" mit dem Tabellen Inhalt so wie gewünscht, was aber noch fehlt ist, ist das einfügen eines neuen Absatzes vor dem einfügen des Inhaltes aus der Zwischenablage,
denn das "
oTable.dispose" entfernt auch den Absatz in dem die Tabelle stand.
Daran, nämlich einen neuen Absatz einfügen, scheitere ich gerade wieder ziemlich grandios
In der Version für TextString hattest du das wohl mit "
oText.insertTextContentBefore ( oPar, oTable)" gelöst !?
in einem anderen Makro hatte ich schon einmal hiermit "
otext.insertControlCharacter(ocursor, 5,false) ' einen neuen Absatz" Erfolg
aber funktioniert hier auch nicht. ...... %#&-%&"& grmph
Wäre toll wenn du mir hier noch wieder auf die Sprünge helfen könntest. Bütte
Aber das ist noch nicht alles wo ich drüber brüte
!? (ich möchte ja nicht, dass da bei jemandem lange Weile aufkommt ) pfeif
In dem Dokumenten gibt immer eine bis mehrere Tabellen. Die letzte Tabelle in dem Dokument soll aber anders behandelt werden wie vorherigen (anderes Format und Text austauschen).
Da ich aber weder den Index oder den Namen der Tabelle kenne, kann ich die auch nicht direkt ansprechen und muss deshalb habe ich mit einem "if" den Zellen,String auf den Inhalt prüfen (der ist Bekannt) und ggf wechseln,
dass habe ich aber leider auch noch nicht richtig im Griff
Da ist mir jetzt die Idee gekommen es mit "Enum" zu versuchen, da wird von oben nach unten durch gezählt, somit sollte das letzte Element eigentlich auch immer die letzte Tabelle im Dokument sein !?
Code: Alles auswählen
sub test4_table
' läd die Bibliothek für das "XrayTools"
If NOT Globalscope.BasicLibraries.isLibraryLoaded("XrayTool") Then
GlobalScope.BasicLibraries.LoadLibrary("XrayTool")
End If
Doc = thisComponent
Enum = Doc.Text.createEnumeration
Doc = ThisComponent
Enum = Doc.Text.createEnumeration
' Schleife über alle Absätze
While Enum.hasMoreElements
TextElement = Enum.nextElement
if hasunointerfaces(TextElement,"com.sun.star.text.XTextTable")= true then
print " dieses ""TextElememt"" ist eine Tabelle "
'xray TextElement
print TextElement.name
' und nu ?
' 1. wie vor dieser Tabelle einen neuen Absatz "chr(13)" einfügen
' 2. wie den Inhalt der Zelle getby.Index(1,0) ansprechen, damit mit 3. der Inhalt aus B1 in die Zwischwnablage kommt
' 3.
oDispatch = createUnoService("com.sun.star.frame.DispatchHelper")
oDoc = ThisComponent.CurrentController.Frame
oDispatch.executeDispatch(oDoc, ".uno:Copy", "", 0, Array())
.............
wend
so werden die Tabellen jetzt schön der Reihe nach angesprochen und angezeigt, soweit ist das glaube ich der besserer Weg.
Ich hatte dann noch gedacht, es ist möglicherweise besser/schneller wenn man die Schleife mehrfach aufruft und immer nur eine Aktion durch führt
1. Durchlauf nur neue Absätze einfügen Formate setzen
2. Durchlauf nur Zelleinhalt ansprechen/Formate setzen
3. Durchlauf copy 'n' paste
4. oTable.dispose gebyindex(0)
schönen Sonntag und Danke fürs lesen und so ...............
