Seite 1 von 1

VBA 3 Zellen kopieren und verbinden. Schleifendurchlauf?

Verfasst: Mo 7. Jul 2014, 23:43
von Kutte
Hallo Zusammen,

ich möchte folgenden Ablauf in einem Makro automatisieren:

Spalten "L" "K" und "I" enthalten Adressangaben und sollen in einer neuer Spalte, nach dem Schema: Straße (Leerzeichen) Hausnummer (Leerzeichen) Zusatz, zuammengefasst werden.
Im ersten Schritt kopiere ich die Spalten samt Inhalt an das Ende der Tabelle (Beispiel, klappt auch soweit) :

oSheet = ThisComponent.Sheets(1)
oRangeAddress1 = oSheet.getCellRangeByName("L1:L10").getRangeAddress()
oCellAddress1 = oSheet.getCellByPosition(49, 1).getCellAddress()
oSheet.copyRange(oCellAddress1, oRangeAddress1)
oSheet = ThisComponent.Sheets(1)
oRangeAddress2 = oSheet.getCellRangeByName("K1:K10").getRangeAddress()
oCellAddress2 = oSheet.getCellByPosition(50, 1).getCellAddress()
oSheet.copyRange(oCellAddress2, oRangeAddress2)
oSheet = ThisComponent.Sheets(1)
oRangeAddress3 = oSheet.getCellRangeByName("I1:I10").getRangeAddress()
oCellAddress3 = oSheet.getCellByPosition(51, 1).getCellAddress()
oSheet.copyRange(oCellAddress3, oRangeAddress3)

Hier gebe ich allerdings den Bereich 'range' explizit an. Besser wäre hier eine Abruchbedingung, z.B. 'letzte Zeile'.
>>>>>>>>>>>>>>>>>>>
Die Funktion "verbinden" habe ich per Makro aufgezeichnet und funktioniert auch für die erste Zeile.

sub Main
rem ----------------------------------------------------------------------
rem define variables
dim i
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 = "$AX$2:$AZ$2"

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


Wie kann ich diesen Vorgang, per Schleife, bis zur letzen Zeile durchlaufen lassen? Abruchbedingung auch hier 'letzte Zeile'.
Die Bereich: args1(0).Value = "$AX$2:$AZ$2" müsste also bei jedem Durchgang erhöht werden.

Bei der Ausführung des zweiten Skript, kommt eine Fenster mit der Abfrage: Ob Inhalte verschoben werden sollen?
Das müsste im Automatikmodus mit 'true' bestättigt werden, sonst muss man paar hundertmal klicken.. (?)

Das ist aktuelle mein Ansatz, vielleicht gibt es mit Open Office Mitteln eine viel elegantere Lösung.
Bin für jeden Vorschlag zur Lösung offen.

Vielen Dank im Voraus

Kutte

Re: VBA 3 Zellen kopieren und verbinden. Schleifendurchlauf?

Verfasst: Di 8. Jul 2014, 09:32
von pmoegenb