Schaltfläche und Makro

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Walter43
*
Beiträge: 18
Registriert: So, 16.01.2011 10:14

Schaltfläche und Makro

Beitrag von Walter43 »

Hallo an alle OOo-Freunde, plage mich schon wochenlang mit folgendem Problem. Versuche einen Dienstplan von Excel VB auf OOo Calk umzuschreiben. Aber beim erstellen eines Makros das mit einer Schaltfläche aktiviert werden soll, komme ich nicht weiter. Der Ablauf sollte folgender sein: In Tabelle "Jan" Bereich
"aa4:ab45 kopieren, in Tabelle "Druck" im Bereich "k4:l45" Werte und Format einfügen und drucken und dann wieder in Tabelle "Jan" auf "aa15" springen.
Unten habe ich ein mit dem Makrorekorder erstelltes Makro angehängt, aus welchem ich nur Bahnhof verstehe. Nun zu mir ich arbeite auf einem Macbook mit Betriebssystem Leopart und 68 Jahre jung der noch etwas lernen möchte. Für eure Hilfe bin ich sehr, sehr dankbar. Mit freundlichen Grüssen Walter43

Code: Alles auswählen

sub m1druck
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 = "$AA$4:$AB$45"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Nr"
args3(0).Value = 15

dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args3())

rem ----------------------------------------------------------------------
dim args4(5) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Flags"
args4(0).Value = "SVDT"
args4(1).Name = "FormulaCommand"
args4(1).Value = 0
args4(2).Name = "SkipEmptyCells"
args4(2).Value = false
args4(3).Name = "Transpose"
args4(3).Value = false
args4(4).Name = "AsLink"
args4(4).Value = false
args4(5).Name = "MoveMode"
args4(5).Value = 4

dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args4())

rem ----------------------------------------------------------------------
dim args5(1) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Copies"
args5(0).Value = 1
args5(1).Name = "Collate"[color=#800000][/color]
args5(1).Value = true
dispatcher.executeDispatch(document, ".uno:Print", "", 0, args5())
rem ----------------------------------------------------------------------
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "Nr"
args6(0).Value = 2
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args6())
rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "ToPoint"
args7(0).Value = "$AA$4"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args7())
end sub

Moderation,4: CODE tags zur besseren Lesbarkeit gesetzt
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Schaltfläche und Makro

Beitrag von clag »

Hallo Walter43,

eigentlich sollte das kein so großes Problem sein,
was soll den genau gedruckt werden, nach dem du die Daten in die Tabelle "Druck" eingefügt hast,
ein bestimmter Bereich oder die ganze Tabelle?
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Walter43
*
Beiträge: 18
Registriert: So, 16.01.2011 10:14

Re: Schaltfläche und Makro

Beitrag von Walter43 »

Hallo clag,die Tabelle "Druck" soll ganz gedruckt werden.

mfg Walter43
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Schaltfläche und Makro

Beitrag von clag »

Hallo Walter,

ich habe da mal ein Makro aufgezeichnet was tut was du möchtest,
allerdings habe ich auf der Seite Druck einen Druckbereich festgelegt der rote Rahmen.

Wenn du in deinem Calc-Dokument ebenfalls einen Druckbereich festlegst unter (Menü > Format),
sollte das Makro in deinem Dokument auch funktionieren, vermute ich jedenfalls stark.

Du hast nicht geschrieben was bei deinem Makro nicht funktioniert.
Versuch es einmal mit diesem hier
Walter43_makro.ods
(11.46 KiB) 74-mal heruntergeladen
erst mit der Beispieldatei und wenn das bei dir richtig tut, dann übernimmst du den Code in dein Dokument.

dann musst du ggf die Nummern der Tabellenblätter im Makro anpassen
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Walter43
*
Beiträge: 18
Registriert: So, 16.01.2011 10:14

Re: Schaltfläche und Makro

Beitrag von Walter43 »

Hallo clag, vorerst herzlichen Dank. Werde erst am Abend mich damit auseinadersetzen.

Bis dann Walter43
Walter43
*
Beiträge: 18
Registriert: So, 16.01.2011 10:14

Re: Schaltfläche und Makro

Beitrag von Walter43 »

Hallo clag,
danke für deinen Code er funtioniert.
Leider habe ich mit der Schaltfäche Probleme.
Wenn ich richtig kombiniert habe ist die Subzeile in deinem Fall "copy_and_print"
der Bezug zur Schaltfläche.
Unbewusst muss ich eine Einstellung durcheinander gebracht haben, den ich kann der Schaltfläche keinen Namen zuteilen.
Ich habe folgendes versucht:
a) Entwurfmodus eischalten und Schaltfläche auf Position gebracht.
b) mit rechter Maustaste Fenster göffnet und Namen eingegeben.
c) Entwurfmodus ausgeschaltet.
Gerne würde ich den ganzen Code besser verstehen, hätte nie gedacht, das der Unterschied zu VB so gravierend ist.
Kann man den Code noch einfacher schreiben?

mfg Walter43
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Schaltfläche und Makro

Beitrag von clag »

Hallo Walter,

"copy_and_print" ist ein von mir frei gewählter Name für das Makro, der steht in keinem Zusammenhang mit der Funktion
außer um das Makro aufrufen zu können.

Wenn du nun das in deinem Dokument verwenden willst legst du in deinem Dokument (wenn noch nicht vorhanden) ein Modul an,
in dieses kopierst du den Code.

Nun musst du für die Schaltfläche noch festlegen welches Makro bei betätigen aufgerufen werden soll,
das geht über die Eigenschaften der Schaltfläche bzw Menü > Format > Kontrollfeld / Ereignisse,
bei [Aktion ausführen] auf die [...] klicken und das das gewünschte Makro auswählen.

Unter Allgemein kannst du noch den dir genehmen [Titel] der Schaltfläche angeben, die Option [Fokussieren bei Klick] würde ich noch auf "nein" setzen.

so sollte es möglich sein, dass Makro per Schaltfläche zu starten.
Kann man den Code noch einfacher schreiben?

ja wenn man den Code schreibt und nicht aufzeichnet wird es übersichtlicher,
ich bin selbst auch ein ehemaliger "Excellaner" und fand die Makroaufzeichnung von Excel auch praktikabler aber nun ja ......
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Antworten