Praktisch kann ich angewendete Zell-Formatvorlagen tauschen.
Code: Alles auswählen
Sub Main
Dim oDoc as object
oDoc = ThisComponent
oBlatt = oDoc.sheets(2)
cellStyles = oDoc.StyleFamilies.getByName("CellStyles")
vStyle2 = oDoc.createInstance("com.sun.star.style.CellStyle")
for s = 20 to 45
for z = 0 to 42
Tarnen = oBlatt.getCellByPosition(S,Z)
if Tarnen.CellStyle = "VorlageEins" then
Tarnen.CellStyle = "VorlageZwei"
end if
next z
next s
End Sub
Nun möchte ich das ganze natürlich optimieren. Jedoch weiß ich noch nicht, mit was, und wie am besten. Zwei andere Methoden hat ich mir nun überlegt, wo ich aber nicht weiter komme.
Die 1. wäre mittels DataArray
Code: Alles auswählen
Sub schnell()
x = ThisComponent.Sheets().getByIndex(2).getCellRangeByName("U1:AT46")
Dim daten()
Dim z()
daten() = x.getDataArray()
For i = LBound(daten()) To UBound(daten())
z() = daten(i)
For j = LBound(z()) To UBound(z())
z(j) = i
Next
Next
x.setDataArray(daten())
if x.CellStyle = "VorlageEins" then
x.CellStyle = "VorlageZwei"
end if
End Sub
Ich vermute aber wohl ehern das mein Vorhaben damit nicht zu realisieren ist. Oder etwa doch?
Den Beispielcode hatte ich hier vom Moderator Stephan gefunden. Bis auf die zusätzlichen CellStyle Zeilen, die hat ich mal so eben reingeschustert.
Die 2. Methode die ich mir da überlegt hatte, war mittels Replacedescriptor.
Code: Alles auswählen
sub tarn
Dim oDoc as object
oDoc = ThisComponent
osheet = oDoc.sheets(2)
cellStyles = oDoc.StyleFamilies.getByName("CellStyles")
vStyle = oDoc.createInstance("com.sun.star.style.CellStyle")
oRange = osheet.getCellRangeByName("U1:AT46")
'oSuchen = oRange.createReplaceDescriptor
oRange.createSearchDescriptor.SearchStyles = true
oRange.createReplaceDescriptor.SearchStyles = true
'oSuchen.setSearchString("VorlageEins")
'oSuchen.setReplaceString("VorlageZwei")
'orange.replaceAll(oSuchen)
xray oRange
end sub
Meine Generellen Fragen lauten.
- Welche Methode ist denn besser dafür geeignet die angewendeten Formatvorlagen am schnellsten zu tauschen, Nr.1 oder Nr.2?
- Oder muss ich ein anderen Weg finden und nehmen, als die beien genannten?
- Wenn beide funktionieren würden, welche wäre denn dann wohl am schnellsten?
- Könnt ihr mir bitte wieder behilflich sein?
Freue mich schon auf eure Antworten, und bedanke mich schon mal für eure Bemühungen.
Gruß
balu