Zwei Makros gleichzeitig über einen Button aufrufen

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

Moderator: Moderatoren

lago
Beiträge: 3
Registriert: Do, 30.11.2006 12:14

Zwei Makros gleichzeitig über einen Button aufrufen

Beitrag von lago »

hi

ich will zwei makros durch einen button "aktualisieren" ausführen lassen und trotz rumprobieren bin ich auf keine Lösung gestossen.

ich habe zahlreiche sheets, die jedoch unterschiedlich aufgebaut sind

das erste makro betrifft nur die sheets 1-12
das zweite makro betrifft die sheets 13-15

die beiden makros erledigen jeweils eine andere aufgabe
Ziel ist es jeweils nur einmal in den den sheets 1-12 den Button zu drücken und die sheets 13-15 automatisch zu aktualisieren.

mein letzer ansatz war es, die makros als "function" zu deklarieren und dann in
"Dieser Arbeitsmappe" in folgender form aufzurufen:

Code: Alles auswählen

Sub Aktualisieren
      Makro1()
      Makro2()
End Sub
dem button weise ich dann die "sub aktualisieren" zu.

leider wird bisher nur sheet 1-12 aktualisiert :(

die zwei makros in einem Sub zusammenfassen ist leider nicht möglich, da ich mittlerweile mit oSheet = thisComponent.sheets(1) und nicht mehr mit oSheet = thisComponent.getCurrentController.getActivesheet(), da ansonsten nicht der gewünschte effekt eintritt.

wo liegt mein denkfehler?

ist der weg richtig, die beiden makros als funktion zu deklarieren und nur der ort der sub aktualisieren falsch oder ist es ein total falscher ansatz?

danke für eure hilfe!
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey lago,
ist der weg richtig, die beiden makros als funktion zu deklarieren und nur der ort der sub aktualisieren falsch oder ist es ein total falscher ansatz?
Korrekt. Das ist der richtige Weg - und sollte auch funktionierern. Bei den Funktionsaufrufen kannst du die Klammern weglassen, du übergibst ja keine Parameter.
Ansonsten sollte es aber funktionieren. Schätze, dein Fehler liegt wo anders. Nur...der Rest der Codes fehlt ja, kann ich also wenig zu sagen ;-)

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
lago
Beiträge: 3
Registriert: Do, 30.11.2006 12:14

Beitrag von lago »

es funktioniert leider nicht. ich habe das basteln jetzt leider aufgeben und mache jetzt auf jedem sheet einen button, wo der dazugehörige code aufgerufen wird.

nur leider stosse ich da auf das nächste problem:

kann mir jemand erklären, warum alle makros in "Dieser Arbeitsmappe" gespeichert bleiben, jedoch aber nicht die anderen in den sheets.

momentan habe ich makros in der arbeitsmappe, in meinem 2. tabellensheet und in meinem 16., aber in keinem anderen mehr. ich habe jetzt jedesmal die makros in die jeweiligen sheets kopiert mit dem button verknüpft und gespeichert und geschlossen.

rufe ich die datei aber wieder auf, sind alle makros bis auf die oben genannten wieder weg!!!

warum??? ich finde keine erklärung, da sie ja eins zu eins kopiert werden...

wie kann man das umgehen? ich vermute mit einer bibliothek, liege ich da richtig?

danke jetzt schon mal

grüße von einem verzweifelten lago
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

die zwei makros in einem Sub zusammenfassen ist leider nicht möglich, da ich mittlerweile mit oSheet = thisComponent.sheets(1) und nicht mehr mit oSheet = thisComponent.getCurrentController.getActivesheet(), da ansonsten nicht der gewünschte effekt eintritt.
woraus resultiert dabei ein Problem?

kann mir jemand erklären, warum alle makros in "Dieser Arbeitsmappe" gespeichert bleiben, jedoch aber nicht die anderen in den sheets.

momentan habe ich makros in der arbeitsmappe, in meinem 2. tabellensheet und in meinem 16., aber in keinem anderen mehr. ich habe jetzt jedesmal die makros in die jeweiligen sheets kopiert mit dem button verknüpft und gespeichert und geschlossen.

rufe ich die datei aber wieder auf, sind alle makros bis auf die oben genannten wieder weg!!!

warum??? ich finde keine erklärung, da sie ja eins zu eins kopiert werden...
na ich rate mal:
Du versuchst Deine Makros in einer *.xls zu speichern. Das geht natürlich überhaupt nicht - Nein, man muß das vielleicht nicht wissen, aber mir ist unklar wie Du (anscheinend) mehrere Tage rumprobierst ohne das Dir das auffällt, denn es kann doch garnichts funktioniert haben.

Sachstand ist Du kannst mit OOo keine Makros in Dateien speichern, die im Excel-Format vorliegen, lediglich in den Excel-Dateien bereits bestehende Makros bleiben erhalten.


Falls es das nicht ist mußt Du es bitte nochmals erklären, denn mir ist das alles bisher unklar.




Gruß
Stephan
lago
Beiträge: 3
Registriert: Do, 30.11.2006 12:14

Beitrag von lago »

von vorneherein wegzunehmen, ich speichere gar nichts mit excel (also als xls file), sondern es ist tatsächlich eine Calc Datei (also mit der endung ods) mit StarBasic makros und enthält keinerlei VBA!!!! (bin ja nicht ganz blöd!)
aber mir ist unklar wie Du (anscheinend) mehrere Tage rumprobierst ohne das Dir das auffällt, denn es kann doch garnichts funktioniert haben.
zu dieser aussage:
es funktionieren beide makros, ich kann jedes makro einzeln mit einem button aufrufen, nur der versuch die beiden als funktionen zu deklarieren um nachher mit einer sub zusammenzufassen ist fehlgeschlagen.

ich bezweifle somit, dass es am inhalt der makros liegt, da ja in dem sheet 2 und 16 dieser starBasic code geht, aber nicht in 1, 3-12 bzw. 14,16 und 17 beibehalten wird und einfach verschwindet (der dann wie schon gesagt, 1:1 kopiert wird und nur die sheetnr angepasst wird)
somit kann ja wohl nicht sein, dass dieser code dann plötzlich aus geisterhand ein excelcode wird!!!
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey lago,

also, da wirst du halt nicht drum herum kommen - wenn du weitere Hilfe suchst, dann poste einfach mal den kompletten Code. Dann können wir das untersuchen.

Oder - noch besser - stelle die Datei im Netz zum Download zur Verfügung und poste hier den Link. Dann haben wir auch gleich das konkrete Beispiel :-)

Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

bin ja nicht ganz blöd
hat auch niemand behauptet(*), ganz im Gegenteil, vor vier Jahren wußte ich es auch noch nicht, hätte damals als Anfänger nicht unbedingt so reagiert ... allerdings wie Thomas sagt kommen wir nun irgendwie ohne Makros nicht weiter, denn mir ist das Problem leider nicht klar.
es funktionieren beide makros, ich kann jedes makro einzeln mit einem button aufrufen, nur der versuch die beiden als funktionen zu deklarieren um nachher mit einer sub zusammenzufassen ist fehlgeschlagen
naja, ohne Code ist das schwer zu sagen, nur Du sagst ja:
die zwei makros in einem Sub zusammenfassen ist leider nicht möglich, da ich mittlerweile mit oSheet = thisComponent.sheets(1) und nicht mehr mit oSheet = thisComponent.getCurrentController.getActivesheet(), da ansonsten nicht der gewünschte effekt eintritt.


und das hatte ich so verstanden das Du eine Änderung machst weil Du glaubst damit das Problem zu lösen bloß ich verstehe dann nicht warum das als 2 Makros geht und innerhalb eines nicht wenn ich allein die zwei Codezeilen sehe auf die es ja wahrscheinlich ankommt.
Möglicherweise Variablendeklarition, nur halte ich das für wenig wahrscheinlich da die Einzelmakros ja funktioniert haben und es hier nur um dn Aufruf aus einem Makro heraus geht und ich zunächst nicht vermute das Du weitere Änderungen gemacht hat

(*)
ich hatte nur eine Exceldatei vermutet wegen:

kann mir jemand erklären, warum alle makros in "Dieser Arbeitsmappe" gespeichert bleiben, jedoch aber nicht die anderen in den sheets
und da habe ich leider keine Erklärung, denn dort steht das Makros einmal gespeichert bleiben und einmal nicht und wenn nicht müssen sie ja zunächst dagewesen sein - nur wie fügt man in Calc Makros in Sheets ein, das geht garnicht - sowohl 'Diese(r) Arbeitmappe' wie auch 'in Sheets' sind hingegen typische Excel-'Ausdrücke' die dann auch als Modulnamen erhalten blieben wenn als ods gespeichert würde, so kam ich zu meiner Vermutung.



Gruß
Stephan
Antworten