❤️ 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. 🤗

Makros verschwinden, Fehlermeldung, falsche Farben aus Hexcode

CALC ist die Tabellenkalkulation, die Sie immer wollten.
Makroirre
Beiträge: 12
Registriert: Mi 4. Jan 2023, 07:27

Makros verschwinden, Fehlermeldung, falsche Farben aus Hexcode

Beitrag von Makroirre » Mi 4. Jan 2023, 07:53

Hallo allseits,

wie mein Nutzername besagt, ich bin ganz irre, diese Makros treiben mich in den Wahnsinn. Vor ca. 2 Wochen hatte ich endlich endlich endlich ein Makro gefunden und in Gang gekriegt, welches mir erlaubt, die Zellen mittels Hex-Wert aus einer andere Zelle direkt zu färben. (Das war wichtig, den bei der Lösung mittels selbsterstellter Farbpalette war es so, das sich die Farben ständig geringfügig änderten, warum ist nicht klar)
Jetzt hatte ich über Weihnachten/Neujahr also viel Zeit in eine Farbtabelle gesteckt, allerdings am Rechner meiner Eltern. Dateien von dort werden auf meinem PC immer zu .ods und in OO geöffnet... Also mache ich eine weitere Kopie in neuem Format für Libre.

Problem: Die kopierte .ods-Datei aus Libre funktioniert i.d.R. nicht in OO, ausserdem sollte diese Tabelle in die eigentliche Datei kopiert werden. Die Makros auch. Speichere ich die OO-Datei in Libre, sind die Makros weg. Also kopierte ich die Tabelle in die Libre-Zieldatei, und wollte die Makros dort neu hinzufügen.

Beim Start erhalte ich dann die Fehlermeldung: Basic Laufzeitfehler Argument ist nicht optional.
Ich verstehe nicht warum. Letztlich sind es im Ursprung beides Libre-Dateien, das mein OS/Libre bestimmte Formate in OO öffnen will sollte daran nichts ändern?

Und dann das Beste: Schließe ich die Datei, und öffne sie wieder, sind alle Makros weg... Ein Update auf die neuste Libre-Version ändert daran nichts. Sicherheitseinstellungen sind praktisch deaktiviert. Ja, ich habe gespeichert.

Kann mir bitte jemand verständlich erklären was da los ist? Ich bin schon nah dran mir selber in die Fresse zu geben um meinen Bildschirm zu verschonen. Entweder lege ich die Sache jetzt unbestimmte Zeit weg und wieder nichts fertig, oder?

Warum ist jetzt eine stundenlange Arbeit wieder "zunichte"? Warum kann ich jetzt nicht einfach weiterarbeiten? Warum muss das alles sein? Sowas macht doch verrückt... Statt irgendwann mal schlafen zu gehen, habe ich jetzt die restliche Nacht an dem dummen Zeug rumprobiert ohne Erfolg. So geht das nicht.

Ich habe schon so oft Dinge die ich machen wollte nie fertig gemacht, denn sobald ich Libre dazu brauchte war irgendwann Ende Gelände, ich kriege es nicht zum laufen.

Ich hoffe mir kann diesmal jemand helfen. Googlen bringt auch nichts, abgesehen vom Zeitverbrauch...

Viele Grüße

EDIT1: Das Format meiner Zieldatei in der die Makros arbeiten sollen ist .xlsx
EDIT2: Es soll einen Ordner für Makros geben, in dem man sehen soll was wirklich gespeichert wurde. Ich finde nicht heraus wo dieser sein soll, Pfade die irgendwo angebenen werden führen zu nichts, und OO-Infos sind für Libre i.d.R. nutzlos.
EDIT3: Ich habe unter Extras/Optionen/LO/Erweitert die Optionalen Funktionen erlaubt, hilft auch nichts!
Zuletzt geändert von Makroirre am Sa 7. Jan 2023, 06:36, insgesamt 1-mal geändert.

mikele
* LO-Experte *
Beiträge: 1932
Registriert: Mo 1. Aug 2011, 20:51

Re: Makros verschwinden, Fehlermeldung

Beitrag von mikele » Mi 4. Jan 2023, 10:34

Hallo,
Das Format meiner Zieldatei in der die Makros arbeiten sollen ist .xlsx
Dann sind die Makros weg, weil Excel mit Calc- Makros nicht arbeitne kann.
Dateien von dort werden auf meinem PC immer zu .ods und in OO geöffnet... Also mache ich eine weitere Kopie in neuem Format für Libre.
Das Standardformat in Libre ist ebenfalls .odt. Offensichtlich hast du Openoffice und Libreoffice parallel installiert. Da must du entscheiden, welches die Standardanwendung für odt-Datei ist. (bzw. du startest Libre und öffnest daraus die odt-Datei).
Ansonsten ist die Frage, ob die Makros im Dokument gespeichert sind oder auf dem Rechner.
Sind die Makros in der odt-Datei vorhanden?
Gruß,
mikele

echo
Beiträge: 248
Registriert: Do 27. Jan 2022, 09:53

Re: Makros verschwinden, Fehlermeldung

Beitrag von echo » Mi 4. Jan 2023, 10:41

EDIT1: Das Format meiner Zieldatei in der die Makros arbeiten sollen ist .xlsx
hallo
ich kann dir bei deinem Problem eigentlich nicht helfen.
Aber ganz sicher: *.xlsx ist das falsche Dateiformat (*.xlsx enthält keine Makros),
du musst als Dateiformat in Excel *.xlsm wählen.

Für Excel habe ich hier eine funktionierende Tabelle die Zellen je nach RGB-Werten einfärbt.
Ich habe sie mal auf ein Minimum reduziert und angehängt.
Vielleicht hilft dir das auch weiter

Gruß Holger
Dateianhänge
RGB Filter.xlsm
(45.65 KiB) 124-mal heruntergeladen

Makroirre
Beiträge: 12
Registriert: Mi 4. Jan 2023, 07:27

Re: Makros verschwinden, Fehlermeldung

Beitrag von Makroirre » Mi 4. Jan 2023, 21:22

Guten Abend,

(Text gelöscht weil nicht relevant - das Problem scheint weniger das Format als vielmehr das Makro zu sein.)

Erstmal Danke an euch beide, auch für die Farbtabelle von Holger. (Bezweifele aktuell das es mir was nützt)

Viele Grüße und auch ein gute Neues!
Zuletzt geändert von Makroirre am Do 5. Jan 2023, 01:44, insgesamt 1-mal geändert.

Makroirre
Beiträge: 12
Registriert: Mi 4. Jan 2023, 07:27

Re: Makros verschwinden, Fehlermeldung

Beitrag von Makroirre » Do 5. Jan 2023, 00:42

Okay,

es geht doch nicht, jedenfalls nicht mit .xlsm - ich bin jetzt schon verwirrt, ob es zwischen drin mal ging? Ich hatte es ja offen, und aus irgendeinem Grund war das Makro dann auch drin (Meine Makros) und in den Zellen selbst gab es keinen Error.
Jetzt hatte ich die Datei als .xlms gespeichert und das Makro nochmal nur für diese Datei erstellt. Schon ist alles beim alten, falls es denn besser war. Dann werde ich jetzt .ods versuchen.
Ich habe aber langsam den Verdacht, es es doch nichts mit den Formaten zu tun hat. Das .xlsm von Holger geht ja auch??

Ich verstehe nur nicht, wenn .ods das Standardformat von Libre ist, warum es überhaupt danach fragt?
Naja. Ich hoffe das lässt sich in den Griff kriegen. Wenn nicht, melde ich mich wieder.
Zuletzt geändert von Makroirre am Do 5. Jan 2023, 01:45, insgesamt 1-mal geändert.

Makroirre
Beiträge: 12
Registriert: Mi 4. Jan 2023, 07:27

Re: Makros verschwinden, Fehlermeldung

Beitrag von Makroirre » Do 5. Jan 2023, 01:29

So, also...

es ist egal ob ich Makros in Libre oder OO starte und ob es .xlsx, .xlsm oder .ods Format hat. Die Makros gehen nicht, aus den .xls Formaten verschwinden sie bzw. werden nicht gespeichert. Es funktioniert eigentlich gar nichts bei genauer Betrachtung.

Ich erhalte nur alle möglichen Fehlermeldungen, je nach dem. Ich hatte auch probiert was passiert, wenn ich .ods Libre zuordne: Es öffnete sich beim Start das Makro-Menü mit einer Fehlermeldung die nicht zu schließen war, nur mittels TaskManager. Das war ärgerlich.

Meldungen, ob ich Makros aktivieren, deaktivieren will oder sonstwas tauchen gar nicht erst auf...

Der Einzige Ort an dem das Makro einwandfrei arbeitet ist eine .ods Datei, bei dieser funktioniert das Makro aber nur, wenn ich sie in Libre öffne, in OO nicht! Sobald ich das Makro kopiere, reproduziere etc. geht gar nichts mehr. Im Makromenü erzeugt das Original übrigens auch Fehlermeldungen, funktioniert aber in der Originaldatei...?

Bevor ich jetzt anfange, alles möglich neu zu installieren, es ist das Macro von JohnSUN auf dieser Seite:
https://ask.libreoffice.org/t/in-calc-i ... ll/38191/5 Dort kann man es auch runterladen.

Im Zweifel bleibt mir, wenn ich das Makro nutzen will, nur, alle meine restlichen Tabellen in diese Datei zu verschieben.
Das kanns aber eigentlich nicht sein, und beim nächsten Makro gibts wieder Ärger...

Ich kenne nur ein Programm mit dem ich nie solchen Ärger hatte, so ganz allgemein, ob nun Diagramm oder eine simple Linie, und das ist das originale MS Excel. Vielleicht ist Freeware nur was für Programmierer, das bin ich nicht.

Ich hoffe das jemand weiß, was da los ist.

____
EDIT: Ich hoffe das ließt noch jemand:

Ich würde das Problem sonst neu formulieren: Das Makro "funktioniert" trotz Fehlermeldungen. In der Originaldatei (s.o) werden die Hex-Farben korrekt angegeben. In meinen Dateien werden die Hex-Farben größtenteils verfälscht.
Einfache Fabren wie #000000 (Schwarz) oder #FF0000 (Rot) scheint er zu kennen (Websafe-Modus?). ABER:

Die neue Libre-Version hat eine Option "Farbe frei wählen". Dort kann man Hexwerte angeben. Nehme ich jetzt so einen "kaputten" Hex-Wert und färbe Zellen manuell, stimmt die Farbe wieder.

Frage: Woher bezieht das Macro seinen Information über die Hex-Farben? Und warum geht es in der einen .ods-Datei und in der anderen nicht? Was unterscheidet die Beispiel-Datei von anderen?

Technisch sollte es Libre ja möglich sein die Farbe anzuzeigen, das Makro selbst funktioniert quasi. Was ist denn los?
Warum sind viele Farbtönte statt hellblau hellgrau, statt hellgrau hellrosa, statt violett grau und statt dunkelgrau schwarzgrün; usw.?

Ich würde mich sehr freuen wenn jemand das versteht!

Ich werde erst morgen Abend wieder Zeit haben, bis dann.

mikele
* LO-Experte *
Beiträge: 1932
Registriert: Mo 1. Aug 2011, 20:51

Re: Makros verschwinden, Fehlermeldung

Beitrag von mikele » Do 5. Jan 2023, 13:46

Hallo,
mit dem Makro wird Excel nichts anfangen können.
Es geht also um die Lösung deines Farbproblems in Openoffice (AOO) bzw. LibreOffice (LO).
In LO steht das Problem nicht mehr, da die Farben direkt per Hexcode festgelegt werden können (ob sie dann korrekt angezeigt werden, hängt auch mit ganz anderen Dingen zusammen - Systemeinstellungen, Hardware, ... -).
Bleibt eine Lösung für AOO:
Wie in deinem Link beschrieben, ist es per benutzerdefinierter Funktion (nicht anderes handelt es sich in dem beschriebenen Makro) nicht (oder nur sehr eingeschränkt) möglich Zellen des aktuellen Tabellenblattes zu verändern.
Daher sehe ich drei Varianten (je nachdem, wie viele Benutzerfarben für Hintergründe:
1) eigene Farben definieren:
->Extras > Einstellungen dann unter OpenOffice auf Farben > Hinzufügen
2) per Makro Formatvorlagen mit den gewünschten Zellhintergründen erstellen
3) einzelne Zellen per Makro einfärben (nicht als benutzerdefinierter Funktion)
Ganz simple so: in die Zelle den Hexwert (z. B. &Hff00ee) einfügen, in der Zelle bleiben und dann das folgendes Makro aufrufen (auch per Tastenkombination möglich)

Code: Alles auswählen

Sub Main
	
	ozelle=ThisComponent.CurrentSelection
	ozelle.cellbackcolor=clng(ozelle.string)
	'um danach den Hexwert in der Zelle zu löschen die folgende Zeile auskommentieren	
	'ozelle.string=""
End Sub
Gruß,
mikele

Makroirre
Beiträge: 12
Registriert: Mi 4. Jan 2023, 07:27

Re: Makros verschwinden, Fehlermeldung

Beitrag von Makroirre » Fr 6. Jan 2023, 04:01

Excel habe ich ja auch gar nicht, Excel hatte ich mal.

Ja, in LO kann man (in der neuen Version, in meiner alten ging das m.W.n. nicht) auch einfach direkt eine Farbe wählen, auch durch Eingabe eines Hexcodes. Das habe ich auch gemacht (Tabelle kopiert), weil ich mir vom Makro auch nach langer Recherche keine Lösung verspreche. Sofern sich was zu Hex-Farben findet, geht es oft darum, Hex-Werte von Farben auszulesen, nicht Zellen nach Hex-Werten einzufärben. Der einzige der sich dazu im Web mit Makros äußert ist genannter JohnSUN, seine Makros bereiten aber vielen auch schlichtweg Probleme, also tun nicht.

Den Hex-Code manuell eingeben ist eine schlimme Lösung eigentlich, denn wenn ich in vmtl. über hundert Farben den Überblick nicht verlieren will, muss ich den Hex-Code dazuschreiben. Dabei darf kein Fehler passieren. Mit Makro ist es (eigentlich) so, dass die Zelle garantiert immer die Farbe des nebenstehenden Hexcodes hat. Ausserdem hilft der Hexcode, Farben die sehr ähnlich sind sicher zu unterscheiden.

Wenn ich jetzt eine Farbe ändern/variieren will, muss ich das daneben schreiben und die Farbe extra ändern. "Mal eben" ausprobieren wie sich die Farbe ändert wenn man statt #D40000 #C40000 nimmt geht so nicht. Stichwort "Workflow".
Eigentlich gefällt mir das nicht, habe ja nicht umsonst ein Makro gesucht.

AOO Calc hatte ich eigentlich nicht ohne Grund nicht benutzt. Wenn ich in AOO mehrere Zellen färbe, muss ich sie auch noch verbinden, denn sonst sieht man z.B. das Raster durch und das stört massiv. Auch hat (mein) OO standarmäßig nur eine grauenhafte Farbpalette... Eventuell schafft da eine aktuelle Version Abhilfe.

Ich versteh dich jetzt so, dass das Makro das du anbietest nur in AOO funktioniert?
Leider verstehe ich da auch deine Erklärung nicht wie das gehen soll:
- statt "#" dann "&H" im Hexcode?
- das Makro doch wie gehabt erstellen?
- was meinst du mit "Makro aufrufen"? Finde dazu nichts bei Google.
- welche Tastenkobination meinst du?
- warum den Hexwert wieder löschen??
- Was meinst du mit "folgende Zeile"? Die Zelle darunter?
- ozelle.string="???" was soll da rein? Eine Zelle? Ein Hexcode?

Solche Erklärungen versteh ich von A-Z eigentlich nicht, tut mir leid!

Mich interessiert im Grunde nach wie vor, warum das Makro in der einen Datei korrekt arbeitet und in der anderen Datei falsche Farben erzeugt. Wie kommt das Makro dazu, falsche Farben auszuwählen? Das passiert ja nicht einfach so, weil das Makro schlechte Laune hat?

Hier nochmal die Quelldatei des Makros:
Dateianhänge
Skin colors.ods
(20.99 KiB) 104-mal heruntergeladen

Makroirre
Beiträge: 12
Registriert: Mi 4. Jan 2023, 07:27

Re: Makros verschwinden, Fehlermeldung

Beitrag von Makroirre » Fr 6. Jan 2023, 07:00

Update:

Das man statt # auch &H für den Hex-Code nutzen kann bzw. muss habe ich jetzt schon mehrmals gelesen.
Ich hatte mir nochmal das Macro genauer angeschaut. Dort gibt es eine Zeile, die "&H" mit "#" ersetzen soll.
Diese funktioniert offenbar nur in der Originaldatei (Link/Download oben). Solbald die Tabelle oder das Macro kopiert werden geht nichts mehr. Schreibe ich dann alle Hex-Codes mit "&H", stimmen die Farben wieder.

Ich werde gleich versuchen ob eine Kopie der ganzen Datei funktioniert und ob sich die Tablelle anders verhält wenn sie verschoben wird. Ist aber nicht zu erwarten.

Hat jemand eine Idee, wie man LO überzeugen kann, den Hexcode mit "#" zu akzeptieren? "&H" ist scheusslich... (wer bitte kam überhaupt auf sowas? Wer programmiert sowas? Echt mal :roll: Hex-Code hat eben ein #! Wenns wenigstens &# wäre! Nee...)

Hier nochmal das Macro als Code:

Code: Alles auswählen

Function crtStylesIfNeed(sColorCode As String, Optional newStylePrefix As String) As String
Dim oStyleFamilies As Variant, oCellStyles As Variant, oENames As Variant
Dim oBaseCellStyle As Variant, nameParentStyle As String
Dim oNewCellStyle As Variant, nameNewStyle As String, nCellBackColor As Long
	If IsMissing(newStylePrefix) Then newStylePrefix = "c_"
	nameNewStyle = newStylePrefix & sColorCode
	crtStylesIfNeed = nameNewStyle

	oStyleFamilies = ThisComponent.getStyleFamilies()
	oCellStyles = oStyleFamilies.getByName("CellStyles")
	
	If oCellStyles.hasByName(nameNewStyle) Then Exit Function ' Present, nothing to do

	If oCellStyles.hasByName(newStylePrefix) Then
		oBaseCellStyle = oCellStyles.getByName(newStylePrefix)
	Else
		oBaseCellStyle = oCellStyles.getByIndex(0) ' "Default"
	EndIf
	nameParentStyle = oBaseCellStyle.getName()
	
	oNewCellStyle = ThisComponent.createInstance("com.sun.star.style.CellStyle")
	oNewCellStyle.ParentStyle = nameParentStyle
	oCellStyles.insertByName(nameNewStyle, oNewCellStyle)
	nCellBackColor = CLng(Replace(sColorCode,"#","&H"))
	oNewCellStyle.setPropertyValue("CellBackColor", nCellBackColor)
	oNewCellStyle.setPropertyValue("NumberFormat", oBaseCellStyle.NumberFormat)
End Function
Ich hoffe da findet sich eine Lösung für. Im Original geht es offensichtlich, es MUSS also gehen.

mikele
* LO-Experte *
Beiträge: 1932
Registriert: Mo 1. Aug 2011, 20:51

Re: Makros verschwinden, Fehlermeldung

Beitrag von mikele » Fr 6. Jan 2023, 09:13

Hallo,
das Makro funtioniert schon. Ich habe in deinen Erläuterungen nicht herauslesen können, in welchem System es nicht funktioniert (das es in eine Excel-Datei nicht funktionierern kann haben wir ja schon geklärt).
Zum Verständnis des Makros: Es färbt eine Zelle nicht direkt, sondern (eleganter) erzeugt eine neue Formatvorlage. Über die Teilfunktion VORLAGE() wird der Zelle dann diese Formatvorlage zugewiesen. Diese Vorlage kann dann im Dokument verwendet werden, um Zellen einen entsprechenden Hintergrund zu verpassen.
Wird das Tabellenblatt (nicht die Datei!) oder einzelen Zellen in eine neue Datei kopiert, muss es zu Fehlern kommen, weil dort das Makro nicht existiert.
Also, bitte: Was funktioniert in AOO/LO nicht?
Noch wichtiger: Was ist dein eigentlichen Ziel?
Da offensichtlich Makros und deren Umgang neu für dich sind (was nicht schlimm ist, man muss es nur wissen), wäre eine Lösung ohne Makros vielleicht sinnvoller.
Anmerkung: Mein Codeschnipsel funktioniert in AOO und LO. Hilft dir aber nciht, wenn du nicht weißt, wie man Makros aufruft.
Gruß,
mikele


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