🙏 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!🍀

❤️ DANKE >> << DANKE ❤️

>> 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?

CALC ist die Tabellenkalkulation, die Sie immer wollten.
Rudi27
Beiträge: 13
Registriert: Do 7. Jan 2021, 15:30

"Gelöst" Startbutton außerhalb der Tabellenblätter anlegen, geht das?

Beitrag von Rudi27 » Do 7. Jan 2021, 16:43

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
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)

Helmut_S
* LO-Experte *
Beiträge: 756
Registriert: Di 9. Feb 2016, 19:27

Re: Startbutton außerhalb der Tabellenblätter anlegen, geht das?

Beitrag von Helmut_S » Fr 8. Jan 2021, 16:57

Hallo Rudi,
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?
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.
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

Rudi27
Beiträge: 13
Registriert: Do 7. Jan 2021, 15:30

Re: Startbutton außerhalb der Tabellenblätter anlegen, geht das?

Beitrag von Rudi27 » Fr 8. Jan 2021, 21:31

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
Windows 10 (x64), Office 2010, LO 7.0.4.2 (x64)

Wanderer
* LO-Experte *
Beiträge: 909
Registriert: Di 11. Feb 2014, 20:03
Wohnort: Berlin

Re: Startbutton außerhalb der Tabellenblätter anlegen, geht das?

Beitrag von Wanderer » Sa 9. Jan 2021, 01:43

Hallo,
Rudi27 hat geschrieben:
Fr 8. Jan 2021, 21:31
...
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.
...
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

Rudi27
Beiträge: 13
Registriert: Do 7. Jan 2021, 15:30

Re: Startbutton außerhalb der Tabellenblätter anlegen, geht das?

Beitrag von Rudi27 » Sa 9. Jan 2021, 13:02

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
Windows 10 (x64), Office 2010, LO 7.0.4.2 (x64)

craig
* LO-Experte *
Beiträge: 1137
Registriert: Do 21. Apr 2016, 11:42

Re: Startbutton außerhalb der Tabellenblätter anlegen, geht das?

Beitrag von craig » Sa 9. Jan 2021, 14:52

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.
  1. Die Extension: "XRAY"
    Mit diesen kann man seinen Code untersuchen.
    Ein Beispiel:

    Code: 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
    
    Durch die Anweisung "xray oDoc" wird XRAY aufgerufen. Es öffnet sich ein Fenster
    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.
Gruß

Craig

Nie die Sicherungskopie vergessen!

════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8

Rudi27
Beiträge: 13
Registriert: Do 7. Jan 2021, 15:30

Re: Startbutton außerhalb der Tabellenblätter anlegen, geht das?

Beitrag von Rudi27 » Sa 9. Jan 2021, 15:21

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
Windows 10 (x64), Office 2010, LO 7.0.4.2 (x64)

craig
* LO-Experte *
Beiträge: 1137
Registriert: Do 21. Apr 2016, 11:42

Re: Startbutton außerhalb der Tabellenblätter anlegen, geht das?

Beitrag von craig » Sa 9. Jan 2021, 18:36

Hallo Rudi,
Rudi hat geschrieben:Was soll eigentlich das kleine o vor vielen Anweisungen wie oDoc oder oSheet? Ist das Imagepflege von Open Office?
siehe hier:
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&
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
Gruß

Craig

Nie die Sicherungskopie vergessen!

════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8

Wanderer
* LO-Experte *
Beiträge: 909
Registriert: Di 11. Feb 2014, 20:03
Wohnort: Berlin

Re: Startbutton außerhalb der Tabellenblätter anlegen, geht das?

Beitrag von Wanderer » So 10. Jan 2021, 22:03

Rudi27 hat geschrieben:
Sa 9. Jan 2021, 15:21
Was soll eigentlich das kleine o vor vielen Anweisungen wie oDoc oder oSheet? Ist das Imagepflege von Open Office?
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

Rudi27
Beiträge: 13
Registriert: Do 7. Jan 2021, 15:30

Re: Startbutton außerhalb der Tabellenblätter anlegen, geht das?

Beitrag von Rudi27 » So 10. Jan 2021, 22:26

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
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.



Antworten