Hi DPunch,
danke für die Aufklärung. Klar mit Sheets.getByIndex ist das ja das gleiche.
Bei den verlinkten Beiträgen, welche mir schon bekannt waren, geht es ja um Formular Elemente. Trifft das denn auf ein gezeichnetes Rechteck genauso zu? Müsste ich da auch ein Model aus einem Formular löschen?
DPunch hat geschrieben:
Ohne Weiteres dürfte das nicht gehen, nein, da wirst Du vermutlich jedes Element einzeln kopieren und rüberschieben müssen.
Auch nicht per Dispatcher? ich könnte ja mit
Code: Alles auswählen
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
Die aktuelle Selektion kopieren. Leider ist es mir bisher aber auch nicht gelungen per Makro die Selektion auf ein Shape zu setzen.
So oder so finde ich keine Methods für den Kopiervorgang. Gehe ich richtig der Annahme, dass das nur mit
oDrawPage.add(oShape) geht? Bei meinen bisherigen Versuchen wird damit allerdings immer nur das oShape aus dem Quell Sheet gelöscht. Warum auch immer...
[EDIT] Quatsch. Narürlich nicht gelöscht. Wurde im gleichen Sheet mit x=0 y=0 und 1x1 mm geändert.[/EDIT]
So sieht mein Code aus:
Code: Alles auswählen
Sub copyElement
ActiveSheet = ThisComponent.CurrentController.ActiveSheet
For n = 0 to ActiveSheet.DrawPage.getCount -1
oShape = ActiveSheet.DrawPage.getByIndex(n)
If oShape.supportsService("com.sun.star.drawing.Shape") Then
If oShape.Name = "kopiermich" Then
ThisComponent.Sheets(5).Drawpage.add(oShape)
End If
End If
Next n
End Sub
Gruß,