Makro in Impress: Duplizieren + Inhalte löschen in Objekten

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: Makro in Impress: Duplizieren + Inhalte löschen in Objekten

Re: Makro in Impress: Duplizieren + Inhalte löschen in Objek

von apop343 » Mo, 16.09.2013 22:45

hallo F3K total,
wow, es klappt, super, vielen dank!
wenn ich mir den code so anschaue, wirkt er zwar hübsch und klar, aber doch so, dass ich selber wohl noch jahre daran gedoktort hätte...
auch danke dem moderator für die überarbeitung meiner frage.
so macht computern und foren-nutzen spaß!

Re: Makro in Impress: Duplizieren + Inhalte löschen in Objek

von F3K Total » Mo, 16.09.2013 19:20

Hi,
dies funktioniert:

Code: Alles auswählen

sub KopiereneinfuegenKarte
    dim document   as object
    dim dispatcher as object
    oRectangle = thiscomponent.currentselection(0)
    if isnull (oRectangle) then 
        msgbox ("Bitte zu kopierende Karte markieren",16,"Fehler")
        exit sub
    endif
    opos = oRectangle.Position
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
    dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
    onewRectangle = thiscomponent.currentselection(0)
    opos.Y = oPos.Y + 2000 '2,000 cm nach unten
    onewRectangle.Position = opos
    onewRectangle.String =""
end sub
Siehe auch Beispieldatei.
EDIT: Habe eine überflüssige Makro Zeile gelöscht. Anhang erneut hochgeladen.
Gruß R
Dateianhänge
Copy_Rectangle.odp
(13.14 KiB) 76-mal heruntergeladen

Makro in Impress: Duplizieren + Inhalte löschen in Objekten

von apop343 » Mo, 16.09.2013 15:54

Hallo, bin blutiger Anfänger in der OOo-Makro-Programmierung - aber vielleicht kann mir jemand beistehen?

Ich benutze Impress, um mit Kunden zusammen Ideen zu entwickeln. Dafür benutze ich die rechteckigen Zeichnungsobjekte wie Moderationskarten.
Das heisst: eine Idee mit ein paar Stichworten auf eine Karte schreiben, dann brauche ich eine neue leere Karte darunter.
Und genau für diese Aktion "neue leere Karte darunter" benötige ich ein Makro, damit ich nicht jedesmal duplizieren, fenster bestätigen, bisherigen Inhalt löschen klicken muss. Vermutlich für erfahrene Makro-Programmierer ein Klacks, für mich unlösbar...

Ein bisschen habe ich ja schon:

Code: Alles auswählen

sub KopiereneinfuegenKarte
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 ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
rem ----------------------------------------------------------------------
end sub
...damit ist schon mal eine identische Kopie der bisherigen markierten Karte entstanden.
Was muss ich nun programmieren, damit die Kopie zum Beispiel 2,0 cm in der Y-Achse versetzt wird und deren Inhalt gelöscht wird?
Vielen Dank für Eure Hilfe!


Moderation:
[​code]…[​/code] Tags gesetzt
lorbass, Moderator

Nach oben