gesucht Macro für Zellen zusammen führen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

ceo8853
Beiträge: 5
Registriert: Do, 17.08.2006 23:03
Wohnort: am Zürichsee

gesucht Macro für Zellen zusammen führen

Beitrag von ceo8853 »

Hallo Leute
Bis heute mussste ich mich nicht mit Macros abgeben, daher verstehe ich davon zu wenig um mit folgendem Problem selber fertig zu werden.

Ich habe das Problem, das ich in diversen Tabellen die Zellen aus Spalte F und G zusammenlegen muss und der Inhalt in die erste Zelle verschoben werden soll. Wenn ich da mit einem Macro aufnehme, funktioniert das nur auf die Zellen F8 +G8. wie kann ich dem Macro beibringen, dass es nacheinander alle Zellen aus Spalte F und G zusammenführen soll. Die Tabellen haben manchmal 3000 Zeilen und mehr.

Würde mich sehr freuen wenn mir jemand da weiterhelfen könnte.
Gruss ceo

Wenn ich das Macro anzeige sieht das so aus:


REM ***** BASIC *****


sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$F$3:$G$3"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "MoveContents"
args2(0).Value = true

dispatcher.executeDispatch(document, ".uno:ToggleMergeCells", "", 0, args2())


end sub
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Es reicht aus eine Schleife darüber zu legen:

Code: Alles auswählen

sub Main 
rem ---------------------------------------------------------------------- 
rem define variables 
dim document as object 
dim dispatcher as object 
rem ---------------------------------------------------------------------- 
rem get access to the document 
document = ThisComponent.CurrentController.Frame 
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") 

rem ---------------------------------------------------------------------- 
dim args1(0) as new com.sun.star.beans.PropertyValue 
args1(0).Name = "ToPoint" 

rem ---------------------------------------------------------------------- 
dim args2(0) as new com.sun.star.beans.PropertyValue 
args2(0).Name = "MoveContents" 
args2(0).Value = true

For i = 1 To 3000
args1(0).Value = "$F$"& i & ":$G$" & i

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1()) 

dispatcher.executeDispatch(document, ".uno:ToggleMergeCells", "", 0, args2()) 

Next i

end sub

Gruß
Stephan
ceo8853
Beiträge: 5
Registriert: Do, 17.08.2006 23:03
Wohnort: am Zürichsee

Beitrag von ceo8853 »

Hallo Stephan
Danke für die Hilfe! Das ist eine wesentliche Erleichterung!
Ein kleiner Schönheitsfehler hat die Formel. Beim zusammenführen der Zellen wird jetzt jedesmal die Frage, "Soll der Inhalt der verdeckten Zelle in dieZelle verschoben werden?", gestellt. Wenn ich dann aber auf der Taste "J" bleibe wird das Macro 3000 mal ausgeführt. Man könnte das vermutlich auch automatisieren. Oder ist das eine Einstellung in Open Office?
Question

Gruss
ceo
Antworten