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
🍀 Das LibreOffice Forum braucht HEUTE Ihre Hilfe! 🍀
❤️ Spenden Sie jetzt und sichern Sie die Zukunft unseres LibreOffice-Forums ❤️
Ihre Spende hilft, die Community offen, werbefrei (bei Registrierung) und lebendig zu halten. Vielen lieben Dank!
>> Das LibreOffice-Forum lebt von Ihnen – und von vielen Experten, die freiwillig und kostenlos ihr Wissen teilen.<<
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.
VBA 3 Zellen kopieren und verbinden. Schleifendurchlauf?
-
pmoegenb
An alle, die das LibreOffice-Forum gern nutzen:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das laufende.
Einfach per Kreditkarte oder PayPal. Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.
❤️ Vielen lieben Dank für Ihre Unterstützung ❤️