Zellbezüge sollen beim Kopieren erhalten bleiben
Verfasst: So, 14.03.2010 17:16
Hallo OOo-Freunde,
ich versuche im Moment folgendes Problem zu bewältigen:
Das aktive Tabellenblatt soll dupliziert werden, was ja über copyByName auch nicht so schwierig ist.
Allerdings werden die relativen Zellbezüge, welche auf andere Blätter verweisen, angepasst, was ich gerne verhindern möchte.
In einem älteren Referenzhandbuch fand ich den Hinweis auf ToggleRelative, womit sich nach einmaligem Ausführen die Zellbezüge in absolute ändern. Das erreiche ich händisch auch mit "Umschalt + F4", dann bleiben logischerweise auch die Zellbezüge so erhalten, das ich auf der duplizierten Seite den gleichen Inhalt dargestellt bekomme.
Alternativ hatte ich versucht, es durch aktivieren des Tabellenblattschutzes umzusetzen, aber die Zellbezüge wurden trotzdem geändert.
Kann mir jemand bei der Umsetzung behilflich sein?
Auch andere Lösungsansätze sind willkommen.
Gruß,
Matthias
ich versuche im Moment folgendes Problem zu bewältigen:
Das aktive Tabellenblatt soll dupliziert werden, was ja über copyByName auch nicht so schwierig ist.
Allerdings werden die relativen Zellbezüge, welche auf andere Blätter verweisen, angepasst, was ich gerne verhindern möchte.
In einem älteren Referenzhandbuch fand ich den Hinweis auf ToggleRelative, womit sich nach einmaligem Ausführen die Zellbezüge in absolute ändern. Das erreiche ich händisch auch mit "Umschalt + F4", dann bleiben logischerweise auch die Zellbezüge so erhalten, das ich auf der duplizierten Seite den gleichen Inhalt dargestellt bekomme.
Alternativ hatte ich versucht, es durch aktivieren des Tabellenblattschutzes umzusetzen, aber die Zellbezüge wurden trotzdem geändert.
Code: Alles auswählen
Dim oCalcDokument as Object
Dim oSheets as Object
Dim oSheet as Object
Dim oSelektion as Object
Dim iIndex as Long
Dim sName as String
Dim sCopy as String
Sub Kopieren
oCalcDokument = ThisComponent
oSheets = oCalcDokument.getSheets()
iIndex = oSheets.getCount()
sName = oCalcDokument.CurrentController.ActiveSheet.Name
oSheet = oSheets.getByName(sName)
oSelektion = oSheet.getCellRangeByName("A1:O70")
oSelektion.ToggleRelative
sCopy = sName & "_2"
oSheets.copyByName(sName, sCopy, iIndex)
End Sub
Auch andere Lösungsansätze sind willkommen.
Gruß,
Matthias