Makro - kopieren, einfügen und ersetzen

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

Moderator: Moderatoren

F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Makro - kopieren, einfügen und ersetzen

Beitrag von F3K Total »

Hallo Sanguinius,
anbei ein Beispiel, was eigentlich alles tut, was du beschrieben hast.
Du musst es natürlich für Deine Bedürfnisse anpassen.
Ich habe als erste nachfolgende Tabelle die Tabelle "Montag" gewählt. Alle Formeln auf Tabelle1 beziehen sich also auf "Montag"
Das Makro arbeitet wie folgt:
  • Es wird eine Leezeile unterhalb der ersten Zeile eingefügt
  • Die letzte benutzte Spalte wird ermittelt
  • Die Zeile 1 wird in die Leerzeile kopiert -> Es entstehen Formeln die falsch sind
  • Die Formeln der Zeile 1 werden in die neue Zeile kopiert, dabei wird der Tabellenname, hier Montag, durch den Namen der mittels Inputbox abgefragt wird ersetzt.
Hier das Makro:

Code: Alles auswählen

Sub Copy_Row1
    dim aDestination as new com.sun.star.table.CellAddress 'Einzelne Zelle oben links
    osheet = thiscomponent.sheets(0)
    osheet.Rows.insertByIndex(1,1)'Leerzeile einfügen
    ocursor = osheet.createcursor
    ocursor.gotoendofusedarea(false)
    orangeaddress = ocursor.rangeaddress
    nEndcolumn = orangeaddress.EndColumn'letzte benutzte Spalte ermitteln
    oSrange = osheet.getcellrangebyposition(0,0,nEndcolumn,0)'Quellzellenbereich auslesen (erste Zeile, Index 0)
    aSAddress = oSrange.RangeAddress 'Bereichsadresse des Quellzellenbereiches auslesen
    with aDestination 'Zielzelle festlegen (ab hier wird der zu kopierende Bereich eingefügt)
        .Sheet = aSAddress.Sheet
        .Column = 0
        .Row = 1 'zweite Zeile
    end with
    osheet.copyRange(aDestination,aSAddress)'kopieren, Zeile 1 in Zeile 2
    sTable = inputbox("Bitte neue Tabelle eingeben","Auswahl",)'Namen der neuen Tabelle eingeben
    for i = 0 to nEndcolumn ' Formeln ersetzen
     oSCell = osheet.getcellbyposition(i,0)'Zeile 1
     sSFormula = oSCell.formula
     oDCell = osheet.getcellbyposition(i,1)'Zeile 2
     oDCell.Formula = Replace(sSFormula,"Montag",sTable)' in der Formel (sSFormula) "Montag" durch "sTable" (gerade in Inputbox eingegeben) ersetzen und in die Zellen der Zeile 2 schreiben
    next
End Sub
Viel Spaß damit
Gruß R