Calc: Angewendete Zell-Formatvorlage tauschen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Calc: Angewendete Zell-Formatvorlage tauschen

Re: Calc: Angewendete Zell-Formatvorlage tauschen

von komma4 » Mo, 30.05.2011 16:30

foobar^2 hat geschrieben:Oh man ... eindeutig zu warm heut.
Du hast gut reden... bei mir sind es 31 Grad (21:30h)... in der Unterwäsche vor'm Ventilator 8) :lol:

Re: Calc: Angewendete Zell-Formatvorlage tauschen

von komma4 » Mo, 30.05.2011 15:53

foobar^2 hat geschrieben:Die Seiten-Formatvorlage soll einfach auf "Standard" zurückgesetzt werden.
Dafür braucht es kein "Range-Objekt", nur den folgenden Einzeiler

Code: Alles auswählen

ThisComponent.Sheets().getByIndex( 0 ).PageStyle = "Standard"

Re: Calc: Angewendete Zell-Formatvorlage tauschen

von Karolus » Mo, 30.05.2011 15:46

Hallo

Code: Alles auswählen

Sub PageStyleaufStandardzuruecksetzen
thiscomponent.sheets(0).pagestyle = "Default"
End Sub

Re: Calc: Angewendete Zell-Formatvorlage tauschen

von balu » So, 29.05.2011 13:54

Hallo Winfried,

danke schön für deine Schnelle Antwort :D.
Am Schnellsten funktioniert hier die Aufzeichnung eines Makros mit Ersetzen der Vorlage
Hast recht, hätte ich auch selber drauf kommen können. Nur wäre der gesamte Code dafür um ein vielfaches größer geworden. Zumal es sich um mehrere Bereiche und Blätter handelt. Aber das ist jetzt auch nicht weiter wichtig.

klappt natürlich auch (gerade getestet)
Und wie das Klappt! Einfach Klasse :D.
So kurz hätte ich es mir wirklich nicht vorgestellt. Aber auch das werd ich wohl noch lernen und begreifen.


Gruß
balu

Re: Calc: Angewendete Zell-Formatvorlage tauschen

von komma4 » Sa, 28.05.2011 15:48

klappt natürlich auch (gerade getestet)

Code: Alles auswählen


oRange = ThisComponent.Sheets().getByName( "Tabelle3").getCellRangeByName( "U1:AT46" ) 
oSuchen = oRange.createReplaceDescriptor()

With oSuchen
 .SearchStyles = TRUE
 .SearchString = "Vorlage1"
 .ReplaceString = "Vorlage2"
End With

oRange.replaceAll( oSuchen ) 

Re: Calc: Angewendete Zell-Formatvorlage tauschen

von komma4 » Sa, 28.05.2011 15:39

balu hat geschrieben:- Oder muss ich ein anderen Weg finden und nehmen, als die beien genannten?
Am Schnellsten funktioniert hier die Aufzeichnung eines Makros mit Ersetzen der Vorlage 8)

Calc: Angewendete Zell-Formatvorlage tauschen

von balu » Sa, 28.05.2011 14:14

Tach verehrte Comunity,

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
Aber die Experten unter euch ahnen sicherlich schon das dieser Vorgang "Ewigkeiten und 3 Tage" dauert, da es um 26 Spalten und 43 Zeilen geht.
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
Nur das Dumme ist, das ich noch nicht den Durchblick mit dem ganzem UBound & LBound habe. Und mit dem zitierten Code werden auch nur Zahlen in dem genannten Bereich reingeschrieben. Ein tausch der Formatvorlagen geschieht aber nicht, weil ich das wohl irgendwie dort Falsch angehe. Nur wie müsste ich das richtig machen?
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
Aber auch hier komm ich nicht so recht weiter, troz xray häng ich fest. Wie ich mittels Replacedescriptor in einem Blatt Suchen & Ersetzen kann, weiß ich, hab ich schon mehrfach angewendet. Nur jetzt in diesem Falle kann ich das nicht passend umschreiben, da nicht in einer Zelle gesucht wird, sondern in einer ganz anderen Ebene (oder so ähnlich).

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

Nach oben