🙏 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. 🤗
Alles zur Programmierung im LibreOffice.
-
milmac
- Beiträge: 7
- Registriert: Mi 7. Aug 2019, 15:30
Beitrag
von milmac » Di 5. Sep 2023, 22:27
Hallo
In allen Varianten, auch den allereinfachsten und mit jungfräulicher calc-Tabelle, gibt die For Each Schleife sofort den Fehler
Code: Alles auswählen
"Unzulässiger Wert oder Datentyp
Datentypen unverträglich"
aus, ohne überhaupt weiterzukommen. Grundlage ist untenstehender Makrocode. Hab schon über Stunden mit GPT und klassischer Suchfunktion versucht einen Fehler zu finden. Weiß hier jemand mehr?
Code: Alles auswählen
Sub Formatierung()
Dim Doc As Object
Dim PlanSheet As Object
Dim PlanRange As Object
Dim PlanCell As Object
' Die aktive Arbeitsmappe (Dokument) erhalten
Doc = ThisComponent
' Tabellenblatt "Plan" erhalten
PlanSheet = Doc.Sheets.getByName("Plan")
' Bereich in "Plan" von A1 bis E5 erhalten
PlanRange = PlanSheet.getCellRangeByName("A1:E5")
' Schleife durch den gesamten Plan-Bereich
For Each PlanCell In PlanRange
' Prüfen, ob der Inhalt der Zelle ein gültiges Datum ist
If IsDate(PlanCell.getValue()) Then
' Hier können Sie Ihre Formatierungs- und Beschriftungslogik einfügen
' Beispiel: PlanCell.setValue("Gültiges Datum gefunden")
End If
Next PlanCell
End Sub
-
karolus
- * LO-Experte *
- Beiträge: 2539
- Registriert: Fr 10. Dez 2010, 10:01
Beitrag
von karolus » Mi 6. Sep 2023, 05:15
Warum glaubst du ChatGpt?
Wozu gibts schon seit Ewigkeiten mri
zum inspizieren
Code: Alles auswählen
def style_Dates_bad(*_):
doc = XSCRIPTCONTEXT.getDocument()
cell_range = doc.Sheets.Plan["A1:E5"]
# 1→value, 2→Datum, 4 → Text … siehe **CellFlags**
# https://www.openoffice.org/api/docs/common/ref/…
# …com/sun/star/sheet/XCellRangesQuery.html#queryContentCells
dates = cell_range.queryContentCells(2)
dates.CellStyle = 'Schlecht'
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
-
milmac
- Beiträge: 7
- Registriert: Mi 7. Aug 2019, 15:30
Beitrag
von milmac » Mi 6. Sep 2023, 10:40
Danke. Ich denke, glauben tu ich wenn's funkioniert, leider bin ich im Makroprogrammieren ziemlich Anfänger. GPT hat mir schon einige funktionierende Skripte erstellt.
Hier scheitert es direkt an der versuchten For-Each-iterierenden Prüfung eines Bereichs auf Datumswerte.
Der gelieferte MRI-Check(?) übersteigt auch meine Verstehensgrenzen.
Ich wäre dankbar über Info, wie eine funktionierende Überprüfung des Bereichs bzw funktionierendes Auffinden von Datumszellen im Format TT.MM.JJ geschrieben sein muss.
systeminfo übrigens: libreoffice 1:7.3.7-0 auf ubuntu 0.22.04.3
PS-ich hab die MRI-Extension zwar installiert, möglicherweise mit Fehler da LO während der Installation stehen blieb ("LO reagiert nicht") - das zwei Mal. MRI taucht dann in den Extensions auf aber ich finde keinerlei Ansatz, um darauf zuzugreifen, weder aus dem Makrofenster noch aus dem Tabellenfenster heraus.
-
karolus
- * LO-Experte *
- Beiträge: 2539
- Registriert: Fr 10. Dez 2010, 10:01
Beitrag
von karolus » Mi 6. Sep 2023, 13:08
Hallo
In der GUI hat mri zwei Einträge via →→Extras→Plugins…
Aus der Basic-IDE heraus klickst du einmal im Objektkatalog auf →→Meine Makros→→MRILIB
und schon kannst du im Editor zb.
benutzen.
Das oben gepostete Script ist python-code, da empfehle ich für den Anfang
apso.oxt zum Verwalten von Python in Bezug auf Libreoffice
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
-
milmac
- Beiträge: 7
- Registriert: Mi 7. Aug 2019, 15:30
Beitrag
von milmac » Mi 6. Sep 2023, 21:11
Hallo Karolus
Danke, das habe ich gefunden - aber es übersteigt meine Möglichkeiten.
Ich kann die Arbeitsweise von Libreoffice-Basic im Makro zwar einigermaßen nachvollziehen, aber keine Syntax selbst entwickeln.
Daher ist die Hilfe durch ai eine Offenbarung, aber leider , wie hier ja ersichtlich wird, nicht perfekt. Ich wäre froh um weitere Hinweise, wie der beabsichtigte Teilschritt programmiert werden muss, damit er funktioniert: Durch einen Bereich iterieren, um alle Zellen mit dem Datumsformat TT.MM.JJ ausfindig zu machen (und dann weiteren Teilschritten zur Verfügung zu stellen).
Schöne Grüße und danke, wie auch immer.
-
karolus
- * LO-Experte *
- Beiträge: 2539
- Registriert: Fr 10. Dez 2010, 10:01
Beitrag
von karolus » Mi 6. Sep 2023, 23:11
Oben ist der komplette funktionierende Quellcode und mit Apso ist die »Installation« dieses Codes zumutbar einfach, warum redest du weiterhin um den heissen Brei herum?
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
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.