ubuntuusers.de

LibreOffice Makros - Programmiert jemand so etwas von euch?

Status: Ungelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

Mankind75 Team-Icon

Anmeldungsdatum:
4. Juni 2007

Beiträge: 3451

Hallo zusammen,

ich habe LibreOffice über die Jahrzehnte sehr zu schätzen gelernt und komme mit den einzelnen Modulen ganz gut zurecht.

Nun möchte ich mich an die Programmierung einzelner kleiner Makros und Dialoge wagen und habe schon einige Listings aus verschiedenen Büchern eingegeben. Weiterhin habe ich eine ziemlich große Bibliothek und schaue mir dazu auch gerne YouTube-Videos zu dem Thema an.

Meine Frage ist ob jemand von euch sich an die Programmierung von Makros gewagt hat, insbesondere StarBASIC oder Python? Hat jemand vielleicht auch etwas auf github oder auf seiner Homepage veröffentlicht damit ich mir einige praktische Anwendungen und Sourcecode anschauen kann?

Meine eigenen Gehversuche findet ihr in meinem github-Repository.

Gerne können wir uns hier zu dem Thema austauschen. Ich würde mich sehr freuen.

Steve_

Anmeldungsdatum:
10. März 2023

Beiträge: 626

Moin,

ich nutze Python Skripte von ChatGPT erstellt, um auf MS Excel Dateien gewisse Dinge auszufuehren, mittels openxml.

Passt das zum Thema? Eher nicht oder? 😛

Gruss, Steve

Mankind75 Team-Icon

(Themenstarter)

Anmeldungsdatum:
4. Juni 2007

Beiträge: 3451

Steve_ schrieb:

ich nutze Python Skripte von ChatGPT erstellt, um auf MS Excel Dateien gewisse Dinge auszufuehren, mittels openxml.

Du hast mich auf die Idee gebracht, auch mal das mit ChatGPT auszuprobieren. ChatGPT kann sowas aber die Qualität kann ich nicht so direkt beurteilen. Ich habe mal ein einfaches Beispiel gewählt, dass in Writer mal eine Tabelle mit drei Spalten und 5 Zeilen generiert werden soll:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
Sub ErstelleDreispaltigeTabelle()

    Dim oDoc As Object
    Dim oText As Object
    Dim oCursor As Object
    Dim oTable As Object

    ' Aktuelles Dokument (Writer)
    oDoc = ThisComponent
    oText = oDoc.Text
    oCursor = oText.createTextCursor()

    ' Neue Tabelle erzeugen: 5 Zeilen, 3 Spalten
    oTable = oDoc.createInstance("com.sun.star.text.TextTable")
    oTable.initialize(5, 3)

    ' Tabelle an Cursor-Position einfügen
    oText.insertTextContent(oCursor, oTable, False)

End Sub

loph

Anmeldungsdatum:
15. November 2025

Beiträge: 2

Einen Austausch über dieses Thema fände ich auch interessant, ich bin allerdings ein bisschen aus dem Thema raus.

Ich habe mal etwas aufwändiger für meine Frau eine größere Tabelle mit Basic gemacht und versuche mir hin und wieder etwas mit Python zu automatisieren.

Die Dokumentation von UNO und deren Anwendung macht die Sache aber ziemlich schwierig.

Grüße

Mankind75 Team-Icon

(Themenstarter)

Anmeldungsdatum:
4. Juni 2007

Beiträge: 3451

Willkommen bei ubuntuusers.

loph schrieb:

Die Dokumentation von UNO und deren Anwendung macht die Sache aber ziemlich schwierig.

Da tue ich mich auch ein wenig schwer damit. Im Buch von Thomas Krumbein von Galileo Press (jetzt Rheinwerk Verlag) gibt es aber ein ziemlich großes Kapitel darüber. Ich habe ihn mal auf dem Linuxtag getroffen und er meinte, dass man das Konzept von UNO verstanden haben sollte.

Momentan behelfe ich mir mit eher einfachen Skripten in StarBASIC.

Ist eigentlich der Makrorecorder mittlerweile ausgereift? In älteren Versionen galt er zumindest als "experimental feature" und hat auch nicht direkt StarBASIC Code geschrieben.

loph

Anmeldungsdatum:
15. November 2025

Beiträge: 2

Mankind75 schrieb:

Da tue ich mich auch ein wenig schwer damit. Im Buch von Thomas Krumbein von Galileo Press (jetzt Rheinwerk Verlag) gibt es aber ein ziemlich großes Kapitel darüber.

Vielen Dank für den Tipp, allerdings scheint das Buch nicht mehr verlegt zu werden.

Für mein Basic-Projekt hat mir die Website von Andrew Pitonyak sehr weitergeholfen: https://www.pitonyak.org/oo.php

Ansonsten versuche ich meine Makros in Python zu schreiben, daher bin ich nicht (mehr) so tief in der Basic-Thematik drin.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13365

Vielleicht ist es einfacher, wenn Du eine konkrete Problemstellung hast, für die die Community dann helfen kann eine Lösung zu finden.

Noch eine generelle Bemerkung: bei Tabellenkalkulationen beobachte ich oft, dass Dinge über Makros geregelt werden, die auch mit Zellenfunktionen erledigt werden können. Das ist m.E. oft der bessere Ansatz als der iterative.

sh4711 Team-Icon

Moderator

Anmeldungsdatum:
13. Februar 2011

Beiträge: 1474

Mankind75 schrieb:

..., insbesondere StarBASIC ...? ... damit ich mir einige praktische Anwendungen und Sourcecode anschauen kann?

Du kannst Makros aufzeichnen und dir nachher die Ergebnisse im Editor anschauen.

Die ersten vier der folgenden Punkte sind relativ alt aber ggf. noch interessant:

Und nicht zu vergessen die klassischen CheatSheets:

Grundsätzlich:
Prüfe ob du Makros abspeichern und wieder laden kannst ansonsten kann es passieren das viel Arbeit auf einmal weg ist.

sh4711 Team-Icon

Moderator

Anmeldungsdatum:
13. Februar 2011

Beiträge: 1474

Mankind75 Team-Icon

(Themenstarter)

Anmeldungsdatum:
4. Juni 2007

Beiträge: 3451

sh4711 schrieb:

Du kannst Makros aufzeichnen und dir nachher die Ergebnisse im Editor anschauen.

Den Makrorecorder kenne ich - ist der mittlerweile aus dem Experimentalstadium heraus gewachsen?

Ich hatte auch in Erinnerung dass der Recorder seine Ergebnisse in einem eigenen sogenannten "Dispatchermodus" als Makro speichert, der etwas anders die Makros schreibt als würde man sie in der IDE von LibreOffice schreiben. Hat sich da auch etwas getan?

Mankind75 Team-Icon

(Themenstarter)

Anmeldungsdatum:
4. Juni 2007

Beiträge: 3451

Mankind75 schrieb:

Ich hatte auch in Erinnerung dass der Recorder seine Ergebnisse in einem eigenen sogenannten "Dispatchermodus" als Makro speichert, der etwas anders die Makros schreibt als würde man sie in der IDE von LibreOffice schreiben. Hat sich da auch etwas getan?

Ich beantworte mir die Frage mal selbst: Der Makrorecorder schreibt immer noch die Makros im "Dispatchermodus".

Antworten |