🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
"Gelöst" Startbutton außerhalb der Tabellenblätter anlegen, geht das?
"Gelöst" Startbutton außerhalb der Tabellenblätter anlegen, geht das?
Hallo Forumsteilnehmer,
Calc habe ich seit einigen Tagen (LibreOffice 7.0.4.2) und bin seit heute in diesem Forum. Ich bin dabei, mich von MS-Office 2010 unter Win10 zu trennen und habe meine Exceldatei .xlsm als .ods abgespeichert. Einfache Makros von Excel laufen auch als .ods Datei, größere alledings nicht. Momentan schreibe ich die Makros um in das Basic von LibreOffice.
Die Datei hilft mir, die Haushaltskasse zu prüfen, besser gesagt, die Kontobewegungen den Haushaltsausgaben zuzuordnen, also Kosten z.B. für Tanken monatlich aufzusummieren. Per Makro öffnen sich z.B. Listboxen mit der Liste der Themen, Tanken, Lebensmittel, Apotheke usw., eine weiter Listbox mit den Monaten, ein Eingabefeld für den Betrag usw. usw.
An jedem Tabellenblatt hängt dasselbe Makro und hat einen Startbutton. Das ist nicht optimal, ist aber seit 2005 so gewachsen. Jedes Jahr kommt ein Tabellenblatt als Kopie des vorherigen dazu, also jedes Tabellenblatt gilt für 1 Jahr.
Nun mein Problem: läßt sich unter LibleOffice außerhalb der Tabellenblätter, also z.B. in der Menüleiste oben, ein eigener Button installieren, der das Makro startet? Ich müßte dann lediglich dem Makro das gerade aktive Tabellenblatt mitteilen. Früher konnte ich bei Excel eine eigene Menüleiste generieren, ob das heute noch geht, weiß ich nicht und ob bei LO, weiß ich überhaupt nicht.
Die zweite Frage ist: wie installiere ich einen Schaltbutton (Startknopf) auf einem Tabellenblatt, um diesem danach ein Makro zuzuweisen? Einen "Handwerkskasten" mit verschiedenen Arten von Buttons habe ich bislang nicht gefunden.
Ich lese mich momentan in das 683 Seiten lange Manual für OO und LO ein, habe dort bislang aber keine Problemlösung gefunden.
viele Grüße, Rudi
Calc habe ich seit einigen Tagen (LibreOffice 7.0.4.2) und bin seit heute in diesem Forum. Ich bin dabei, mich von MS-Office 2010 unter Win10 zu trennen und habe meine Exceldatei .xlsm als .ods abgespeichert. Einfache Makros von Excel laufen auch als .ods Datei, größere alledings nicht. Momentan schreibe ich die Makros um in das Basic von LibreOffice.
Die Datei hilft mir, die Haushaltskasse zu prüfen, besser gesagt, die Kontobewegungen den Haushaltsausgaben zuzuordnen, also Kosten z.B. für Tanken monatlich aufzusummieren. Per Makro öffnen sich z.B. Listboxen mit der Liste der Themen, Tanken, Lebensmittel, Apotheke usw., eine weiter Listbox mit den Monaten, ein Eingabefeld für den Betrag usw. usw.
An jedem Tabellenblatt hängt dasselbe Makro und hat einen Startbutton. Das ist nicht optimal, ist aber seit 2005 so gewachsen. Jedes Jahr kommt ein Tabellenblatt als Kopie des vorherigen dazu, also jedes Tabellenblatt gilt für 1 Jahr.
Nun mein Problem: läßt sich unter LibleOffice außerhalb der Tabellenblätter, also z.B. in der Menüleiste oben, ein eigener Button installieren, der das Makro startet? Ich müßte dann lediglich dem Makro das gerade aktive Tabellenblatt mitteilen. Früher konnte ich bei Excel eine eigene Menüleiste generieren, ob das heute noch geht, weiß ich nicht und ob bei LO, weiß ich überhaupt nicht.
Die zweite Frage ist: wie installiere ich einen Schaltbutton (Startknopf) auf einem Tabellenblatt, um diesem danach ein Makro zuzuweisen? Einen "Handwerkskasten" mit verschiedenen Arten von Buttons habe ich bislang nicht gefunden.
Ich lese mich momentan in das 683 Seiten lange Manual für OO und LO ein, habe dort bislang aber keine Problemlösung gefunden.
viele Grüße, Rudi
Zuletzt geändert von Rudi27 am Di 12. Jan 2021, 11:52, insgesamt 1-mal geändert.
Windows 10 (x64), Office 2010, LO 7.0.4.2 (x64)
Re: Startbutton außerhalb der Tabellenblätter anlegen, geht das?
Hallo Rudi,
Damit du "dein" Makro aus dieser Symbolleiste starten kannst, musst du im im linken Fenster des "Anpassen-Dialogs" oben "alle Befehle" auswählen, ganz unten "Makro" anklicken, das betreffende Makro auswählen und der Schaltfläche ein (sinnvolles) Icon verpassen.
Zur 2. Frage: Menue "Ansicht" -> Symbolleisten -> Formular Steuerelemente einblenden (das ist der Werkzeugkasten um Formularfelder in der Tabelle zu erstellen) wähle "Schaltfläche" aus und platziere diese auf deiner Tabelle.
Mit RMT Entwurfsmodus einschalten und den "Steuerelement Eigenschaften" Dialog öffnen. Darin dein Makro suchen und eintragen.
Anbei Beisieltabelle mit ein paar Makros zum Aus- Einblenden von Zeilen/Spalten als Anschuungsmaterial sowie Makro Symbolleiste.
Gruß Helmut
selbstverständlich geht das. Mit alt+x+n gelangst du in den "Anpassen" - Dialog. Wähle dort den Reiter "Symbolleiste" klicke rechts auf das Zahnrad und wähle "hinzufügen --> Neue Symbolleiste. Stelle unter "Kategorie" im linken Fenster ein: "Basic" und wähle die Befehle aus, die du möchtest. Damit kannst du "ein" Makro aus den verfügbaren starten.lässt sich unter LibleOffice außerhalb der Tabellenblätter, also z.B. in der Menüleiste oben, ein eigener Button installieren, der das Makro startet?
Damit du "dein" Makro aus dieser Symbolleiste starten kannst, musst du im im linken Fenster des "Anpassen-Dialogs" oben "alle Befehle" auswählen, ganz unten "Makro" anklicken, das betreffende Makro auswählen und der Schaltfläche ein (sinnvolles) Icon verpassen.
Zur 2. Frage: Menue "Ansicht" -> Symbolleisten -> Formular Steuerelemente einblenden (das ist der Werkzeugkasten um Formularfelder in der Tabelle zu erstellen) wähle "Schaltfläche" aus und platziere diese auf deiner Tabelle.
Mit RMT Entwurfsmodus einschalten und den "Steuerelement Eigenschaften" Dialog öffnen. Darin dein Makro suchen und eintragen.
Anbei Beisieltabelle mit ein paar Makros zum Aus- Einblenden von Zeilen/Spalten als Anschuungsmaterial sowie Makro Symbolleiste.
Gruß Helmut
- Dateianhänge
-
- Makro-Symbolleiste.ods
- (19.31 KiB) 165-mal heruntergeladen
MX-Linux KDE + Linux-Mint Cinnamon
Re: Startbutton außerhalb der Tabellenblätter anlegen, geht das?
Hallo Helmut,
ganz herzlichen Dank für Deine ausführliche Beschreibung, die ich genau befolgt und alles perfekt hinbekommen habe. Da zeigen sich deutliche Unterschiede zwischen Excel und Calc. Ein noch größerer Brocken ist nun zu bewältigen, die Syntax von Microsoft zu ersetzen, denn OO bzw LO ist in Vielem doch sehr unterschiedlich. Entsetzt bin ich von einem aufgezeichneten Makro, Zahlen in eine Zelle eines Tabellenblattes zu schreiben. Bei Excel heißt das z.B. cells(1,4)="Auto", bei OO ist das ein ganzer Roman.
Zunächst verwende ich die "Hilfe" um weiterzukommen. Sollte ich hängenbleiben, würde ich mich gern wieder melden.
Viele Grüße
Rudi
ganz herzlichen Dank für Deine ausführliche Beschreibung, die ich genau befolgt und alles perfekt hinbekommen habe. Da zeigen sich deutliche Unterschiede zwischen Excel und Calc. Ein noch größerer Brocken ist nun zu bewältigen, die Syntax von Microsoft zu ersetzen, denn OO bzw LO ist in Vielem doch sehr unterschiedlich. Entsetzt bin ich von einem aufgezeichneten Makro, Zahlen in eine Zelle eines Tabellenblattes zu schreiben. Bei Excel heißt das z.B. cells(1,4)="Auto", bei OO ist das ein ganzer Roman.
Zunächst verwende ich die "Hilfe" um weiterzukommen. Sollte ich hängenbleiben, würde ich mich gern wieder melden.
Viele Grüße
Rudi
Windows 10 (x64), Office 2010, LO 7.0.4.2 (x64)
Re: Startbutton außerhalb der Tabellenblätter anlegen, geht das?
Hallo,
Dafür empfehle ich einen Blick in Dannenhöfers alte FAQ http://www.dannenhoefer.de/faqstarbasic/.
Der sog. Dispatcher-Code in den die GUI übersetzt wird ist eine eigene Welt.
Aber auch sonst ist das Abstrktionslevel wesentlich höher als bei Excel, da von vornherein
portabler und modularer Entwickelt wurde.
mfg, Jörn
die aufgezeichneten Macros sehen nicht so aus, wie man selbst programmieren würde.
Dafür empfehle ich einen Blick in Dannenhöfers alte FAQ http://www.dannenhoefer.de/faqstarbasic/.
Der sog. Dispatcher-Code in den die GUI übersetzt wird ist eine eigene Welt.
Aber auch sonst ist das Abstrktionslevel wesentlich höher als bei Excel, da von vornherein
portabler und modularer Entwickelt wurde.
mfg, Jörn
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ LO 6.3.2 Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit
Re: Startbutton außerhalb der Tabellenblätter anlegen, geht das?
Hallo Jörn,
danke für Deinen Hinweis. Auch wenn Dannenhöfer schon etwas älter ist, kann ich dort Anregungen rausholen und im eigenen Makro ausprobieren. Mit diesem Basic bin ich noch nicht so vertraut, aber im Groben sind durchaus Ähnlichkeiten zu Visual Basic vorhanden, selbst zu Turbo Pascal, von dem ich vor Jahren Fan war. Aber gerade die Feinheiten sind es, die die Fehlermeldungen dann auslösen.
Schönes Wochenende
viele Grüße
Rudi
danke für Deinen Hinweis. Auch wenn Dannenhöfer schon etwas älter ist, kann ich dort Anregungen rausholen und im eigenen Makro ausprobieren. Mit diesem Basic bin ich noch nicht so vertraut, aber im Groben sind durchaus Ähnlichkeiten zu Visual Basic vorhanden, selbst zu Turbo Pascal, von dem ich vor Jahren Fan war. Aber gerade die Feinheiten sind es, die die Fehlermeldungen dann auslösen.
Schönes Wochenende
viele Grüße
Rudi
Windows 10 (x64), Office 2010, LO 7.0.4.2 (x64)
Re: Startbutton außerhalb der Tabellenblätter anlegen, geht das?
Hallo Rudi,
wie Du sicherlich festgestellt hast, gibt es unter Starbasic keine (noch keine) Intellisense wie unter VBA.
Es ist auch nicht ganz einfach, sich in die Struktur der Starbasic-API, etc. einzuarbeiten.
Deshalb nutze ich XRAY, ein Codeinspektions-Tool.
wie Du sicherlich festgestellt hast, gibt es unter Starbasic keine (noch keine) Intellisense wie unter VBA.
Es ist auch nicht ganz einfach, sich in die Struktur der Starbasic-API, etc. einzuarbeiten.
Deshalb nutze ich XRAY, ein Codeinspektions-Tool.
- Die Extension: "XRAY"
Mit diesen kann man seinen Code untersuchen.
Ein Beispiel:Durch die Anweisung "xray oDoc" wird XRAY aufgerufen. Es öffnet sich ein FensterCode: Alles auswählen
Sub test Dim oDoc as Object ' Deklaration der Objektvariablen oDoc = ThisComponent ' Referenzierung der Objektvariablen xray oDoc ' Aufruf von XRAY mit Übgergabe der zu untersuchenden Objektvariablen End Sub
in dem einem alle Eigenschaften, Methode, Schnittstellen, etc. des Objektes "oDoc"
aufgelistet werden, auch die erforderlichen Datentypen werden angezeigt..
Im geöffneten Fenster kann per man Doppelklick eine Ebene (Instanz) tiefer schalten, z.B.
Eigenschaft: oDoc → CurrentController
Methode: oDoc → getCurrentController
Siehe diese Seite unter XRAY Tool >>> "X-Ray tool von Bernard Marcelly"
https://wiki.openoffice.org/wiki/DE/Mak ... X-Ray_tool
Lade Dir das Writerdokument herunter.
Es enhält ein Makro zur Installation und zur Deinstallation von XRAY.
Ausserdem ist es gleichzeitig die Dokumentation zum Xray-Tool.
Damit XRAY lauffähig ist, benötigst Du weder die Office-SDK,
noch eine Browser-Angabe wo die API zu finden ist, zumal die
LibreOffice-API nicht erkannt wird.
Einfach installieren und loslegen.
Wichtig hierbei ist die Anweisung auf Seite 6/7 zum Laden von XRAY.
Datentypen:
https://wiki.openoffice.org/wiki/DE/Mak ... #Variablen
Wenn Du Dich mit der Thematik des Programmierens auseinandersetzen möchtest, kann
ich Dir folgende Seiten und Dokus zur Basic-Programmierung empfehlen.
- Andrew Pitonyak
www.pitonyak.org - Hier die deutsche Übersetzung von Volker Lenhardt zum OOME – Andrew Pitonyak
https://www.uni-due.de/~abi070/count.ph ... eutsch.pdf - http://www.starbasicfaq.de/index.html
- Hiernoch ein Buch von Oracle, ist zwar schon ein wenig betagt, aber hilfreich:
https://docs.oracle.com/cd/E19064-01/so ... 7-3924.pdf
- Andrew Pitonyak
Gruß
Craig
Nie die Sicherungskopie vergessen!
════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8
Craig
Nie die Sicherungskopie vergessen!
════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8
Re: Startbutton außerhalb der Tabellenblätter anlegen, geht das?
Hallo Craig,
danke für Deine Anregungen. Ja, das Programmieren interessiert mich schon seit Jahrzehnten, angefangen habe ich mit Fortran (Lochkarten), dann kam Basic, danach Turbo Pascal. An C++ habe ich mich nie rangetraut. Was andere mit gekauften Programmen machen, habe ich bislang mit Excel gemacht, also Musikarchiv, Haushaltskasse oder Mitgliederverzeichnis, alles natürlich mit Makros gesteuert.
Den Pitonyak habe ich bereits und lese mich dort ein bzw. probiere Routinen aus, die meine VBA Routinen ersetzen sollen.
Irgendwann werde ich dann auch nach Linux umsteigen, will das aber nicht überstürzen. Die X-Ray Geschichte schaue ich mir mal an.
Was soll eigentlich das kleine o vor vielen Anweisungen wie oDoc oder oSheet? Ist das Imagepflege von Open Office?
viele Grüße
Rudi
danke für Deine Anregungen. Ja, das Programmieren interessiert mich schon seit Jahrzehnten, angefangen habe ich mit Fortran (Lochkarten), dann kam Basic, danach Turbo Pascal. An C++ habe ich mich nie rangetraut. Was andere mit gekauften Programmen machen, habe ich bislang mit Excel gemacht, also Musikarchiv, Haushaltskasse oder Mitgliederverzeichnis, alles natürlich mit Makros gesteuert.
Den Pitonyak habe ich bereits und lese mich dort ein bzw. probiere Routinen aus, die meine VBA Routinen ersetzen sollen.
Irgendwann werde ich dann auch nach Linux umsteigen, will das aber nicht überstürzen. Die X-Ray Geschichte schaue ich mir mal an.
Was soll eigentlich das kleine o vor vielen Anweisungen wie oDoc oder oSheet? Ist das Imagepflege von Open Office?
viele Grüße
Rudi
Windows 10 (x64), Office 2010, LO 7.0.4.2 (x64)
Re: Startbutton außerhalb der Tabellenblätter anlegen, geht das?
Hallo Rudi,
Konvention: Variablen
Diese Präfixe helfen Dir und anderen den Code besser zu verstehen
Präfixe → o → Objekt, Service oder Interface
Was sind nun Objekte, Services oder Interfaces?
Hier hilft XRAY weiter oder die API.
Eine Eigenschaft wie BackgroundColor zeigt Xray, z.B. als Datentyp LONG an.
Ist somit kein Objekt, Service oder Interface.
n steht für INTEGER od. LONG:
Siehe Office-Hilfe:
https://help.libreoffice.org/Basic/Usin ... -Variablen
Wenn BackgroundColor ein Objekt wäre, dann würde Dir bei Doppleklick (Xray-Fenster)
eine ganze Reihe von Eigenschaften, Methoden, Services, Interfaces, usw. angezeigt.
Es gibt daneben noch die Structs, bzw. die Constant Groups.
Untersucht man diese mittels Xray, dann kann man sich ggf. leicht täuschen.
Objekt oder doch kein Objekt?
So scheint die Constant Group "PosSize" ein Objekt zu sein, ist aber ein Struct.
API: com.sun.star.awt.PosSize Constant Group Reference
und auch in OOME nachzulesen ab Seite 621.
Die Deklaration von Structs kann unterschiedlich sein.
Siehe hier eine Deklaration mit NEW:
Dim linestyle as New com.sun.star.table.BorderLine
siehe hier:Rudi hat geschrieben:Was soll eigentlich das kleine o vor vielen Anweisungen wie oDoc oder oSheet? Ist das Imagepflege von Open Office?
Konvention: Variablen
Diese Präfixe helfen Dir und anderen den Code besser zu verstehen
Präfixe → o → Objekt, Service oder Interface
Was sind nun Objekte, Services oder Interfaces?
Hier hilft XRAY weiter oder die API.
Eine Eigenschaft wie BackgroundColor zeigt Xray, z.B. als Datentyp LONG an.
Ist somit kein Objekt, Service oder Interface.
n steht für INTEGER od. LONG:
Code: Alles auswählen
Dim nColor as Long
oder
' Dim nColor&
https://help.libreoffice.org/Basic/Usin ... -Variablen
Wenn BackgroundColor ein Objekt wäre, dann würde Dir bei Doppleklick (Xray-Fenster)
eine ganze Reihe von Eigenschaften, Methoden, Services, Interfaces, usw. angezeigt.
Es gibt daneben noch die Structs, bzw. die Constant Groups.
Untersucht man diese mittels Xray, dann kann man sich ggf. leicht täuschen.
Objekt oder doch kein Objekt?
So scheint die Constant Group "PosSize" ein Objekt zu sein, ist aber ein Struct.
API: com.sun.star.awt.PosSize Constant Group Reference
und auch in OOME nachzulesen ab Seite 621.
Die Deklaration von Structs kann unterschiedlich sein.
Siehe hier eine Deklaration mit NEW:
Dim linestyle as New com.sun.star.table.BorderLine
Gruß
Craig
Nie die Sicherungskopie vergessen!
════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8
Craig
Nie die Sicherungskopie vergessen!
════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8
Re: Startbutton außerhalb der Tabellenblätter anlegen, geht das?
Den Umgang hat Craig ja schon ausführlich erklärt. Der Ursprung liegt darin, dass man sich bei Sprachen ohne Deklarationszwang und ohne Typprüfung selbst darum kümmern muss, dass man weiss, was wie gespeichert wird um, während Pascal direkt einen Compiler-Fehler auswirft, Bei Fortran bin ich mir nicht mehr sicher, ist wirklich lange her
Ich kenne zB. auch noch x$ um impizit einen String zu erzeugen für Basic.
Mfg, Jörn
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ LO 6.3.2 Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit
Re: Startbutton außerhalb der Tabellenblätter anlegen, geht das?
Hallo ihr beiden,
ich glaube, ich habe jetzt erst mal genug Hilfestellung erhalten, bin für die nächsten Wochen mit viel Info und Material versorgt worden und werde wir anhand dieser Quellen das Wissen über dieses Basic aneignen (learning by doing). Das Visual Basic bei Excel war zwar spezialisiert auf das Programm, aber deutlich leichter zu programmieren.
Ich melde mich, wie geschrieben, wieder, wenn ich nicht weiterkomme.
Herzlichen Dank nochmal.
Rudi
ich glaube, ich habe jetzt erst mal genug Hilfestellung erhalten, bin für die nächsten Wochen mit viel Info und Material versorgt worden und werde wir anhand dieser Quellen das Wissen über dieses Basic aneignen (learning by doing). Das Visual Basic bei Excel war zwar spezialisiert auf das Programm, aber deutlich leichter zu programmieren.
Ich melde mich, wie geschrieben, wieder, wenn ich nicht weiterkomme.
Herzlichen Dank nochmal.
Rudi
Windows 10 (x64), Office 2010, LO 7.0.4.2 (x64)
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.