❤️ 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.
balu
* LO-Experte *
Beiträge: 370
Registriert: Mi 1. Jun 2011, 16:21

Re: Makros verschwinden, Fehlermeldung, falsche Farben aus Hexcode

Beitrag von balu » So 8. Jan 2023, 19:50

Hallo Makroirre.

Eine Ur-Alte Wahrheit trifft mal wieder den Nagel auf den Kopf!

StarOffice-Tabelle ist nicht gleich Excel 97
Openoffice-Calc ist nicht gleich Excel 2000
Kurz gesagt:
Openoffice-(oder LO, AOO) Calc ist nicht gleich Excel, und Excel ist nicht Calc.
Und beim Konvertieren von Excel auf OO gab und wird es immer wieder Probleme geben! Das ist ein unumstößlicher Fakt. Punkt!

Warum habe ich StarOffice erwähnt?
Weil dies Office die Mutter von den ganzen OpenOfficen, inkklusive LibreOffice ist. Also die Inkompatibilität besteht so gesehen schon seit Jahrzehnten. Und daran wird sich auch nix ändern, weil M$ das nicht will, auch wenn M$ sich etwas angenähert hat. Und das hat jetzt nix gegen M$ zu tun, sondern ist nun mal halt so.

Und jetzt die ganz FÄTTE BÖSE ÜBERRASCHUNG für dich!

Da Du nicht mehr Excel hasst, MUSST Du deine "Geheime Datei" in Calc komplett neu machen. Die Begründung folgt sofort.

Deine Abgespääckte Datei "Tingierung macro defect.ods" habe ich in AOO 4.1.13 mir mal genauer angeschaut. Es hatte wirklich sehr lange gedauert bis ich dein Problem "ersehen" konnte. Ich hatte im Zellbereich "S69:T72" endlich etwas entdeckt. Und zwar stehen dort wohl 2 unterschiedliche HEX-Farbwerte, aber nur eine einzige Farbe.

Guggi hier.
Tingierung.jpg
Tingierung.jpg (77.7 KiB) 2377 mal betrachtet
-
Ist schon leicht komisch.
Aber jetzt kommt eine neue und leere Datei zu tragen, die nur das Makro beinhaltete. Und dort habe ich dann die HEX-Farbwerte eingetragen, und diese Formel eingegeben:

Code: Alles auswählen

=T(VORLAGE(CRTSTYLESIFNEED(B1;"clr")))
...
Und schon sah das ganze gleich ganz anders aus.
Guggi hier.
Blank.jpg
Blank.jpg (75.22 KiB) 2377 mal betrachtet
-
Du siehst, die HEX-Farbwerte sind zu deiner Datei identisch. Aber es werden 2 unterschiedliche Farben dargestellt.
Das ist EIN Problem wenn man eine alte Excel Datei nicht in Excel, sondern in einem anderen Tabellenkalkulationsprogramm weiter bearbeiten will. Es kommt zwangsläufig zu konvertierrungsprobleme die sehr unterschiedlich ausfallen können. Und wer weiss auf was für Probleme Du noch stoßen wirst, früher oder später. Deshalb mein dringender und ernst zu nehmender Rat:

Mach die Datei komplett neu.
Achte darauf das Du nix mit "Copy & Paste" (strg + C, strg + V) aus der alten Datei in die neue kopierst. Dadurch werden auch nicht sichtbare Probleme mit rüberkopiert.
Falls Du komplexere Formeln kopieren willst, dann füge sie in einen reinen Text-Editor dort ein, und anschließend kopierst Du sie von dort in die neue Datei rein.

Du kannst mir ruhig glauben, das mein dringender und ernst zu nehmender Rat auf Jahre langer Erfahrung beruht. Und das würden dir andere hier im Forum auch empfehlen/Raten.



Gruß
balu

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

Re: Makros verschwinden, Fehlermeldung, falsche Farben aus Hexcode

Beitrag von mikele » So 8. Jan 2023, 20:20

Hallo,
zunächst entschuldige ich mich,, dass ich die Beispieldatei übersehen habe.
Balu hat schon alles Wesentliche gesagt.
Das Problem liegt etwas in der Tiefe: wie schon beschrieben färbt das Makro die Zellen nicht direkt, sondern legt eine Zellvorlage (mit dem Hexcode der Farbe als Namen an). Offensichtlich ist irgendwann (vermutlich beim Hin und Her zwischen xls und odt) z. B. in der Formatvorlage namens "clr#FFBB99" die Hintergrundfarbe #fec7bd definiert worden (und ebenso in der Vorlage "clr#EEBB99" - dadurch haben die Zellen auch dieselbe Farbe).
Ich habe nun einfach mal alle benutzerdefinierten Formatvorlagen gelöscht, abgespeichert und die Datei neu aufgerufen. Die benötigten Vorlagen werden nun alle neu erstellt und die Farben stimmen.
Dateianhänge
Tingierung macro defect_neu.ods
(24.72 KiB) 168-mal heruntergeladen
Gruß,
mikele

balu
* LO-Experte *
Beiträge: 370
Registriert: Mi 1. Jun 2011, 16:21

Re: Makros verschwinden, Fehlermeldung, falsche Farben aus Hexcode

Beitrag von balu » So 8. Jan 2023, 21:49

Hallo mikele.

Dolle Teamarbeit, und das noch nicht mal abgesprochen. :)
Du hasst dort geschaut was ich nicht sah. Und so kommt ein Stein aufn anderen.


Gruß
balu

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

Re: Makros verschwinden, Fehlermeldung, falsche Farben aus Hexcode

Beitrag von Makroirre » Mo 9. Jan 2023, 03:17

Hallo mikele, Hallo balu,

(huch, da ist ja eine ganze 3. Seite dazu gekommen, Moment..., JohnSUN von ask.libreoffice.org war schneller als mikele, bzw. dort war ich zuerst, ihr hatte beide die gleiche richtige Lösung.)

Also, das Problem hat sich gelöst. Wie es zustande kam ist nicht (sicher) klar, aber wie man es lösen und vermeiden kann.

Offenbar wurden, als ich die Tabelle aus der funktionierenden .ods-Datei in meine .ods-Datei kopierte, OHNE dass das Makro ZUVOR hinzugefügt wurde (weil .xls dazwischen kam), alle Farben falsch generiert. Offenbar ist es auch so, dass LO diese falschen Vorlagen "ewig" einspeichert, und sie nicht beim Neustart oder Neuladen neu berechnet. Erstmal falsch drin, werden sie evtl. sogar übertragen, wenn man in andern Formaten, Dateien usw. abspeichert.

JohnSUN hat ein Video mit meiner Datei erstellt, wo die Lösung gezeigt wird: Alle benutzerdefinierten Formatvorlagen werden gelöscht und neu generiert. Voraussetzung ist, dass das Makro zuvor vollständig und korrekt installiert wurde.
Die Tabelle arbeitete danach wieder korrekt.

https://www.youtube.com/watch?v=AE_rlXemohI

Vergleicht man im Video 0:10 und 0:40, sieht man den Farbwechsel in eigentlich allen Zellen. John meinte, wenn die Vorlagen erstmal falsch gespeichert wurden, korrigiert/kontrolliert LO sie nicht mehr, erkennt auch keinen Fehler.

Ich kann die Tabelle also so oft kopieren wie ich will, LO behält i.d.R. die falschen Vorlagen. Das sollte sich auch durch einen Upload/Download nicht ändern. Richtig wären nur Farben, für die bereits Vorlagen bestehen. Wer meine Datei genau untersucht, sollte den Fehler auch bemerken.

JohnSUN hatte ihn übersehen. Ich ja auch anfangs, denn viele Farben waren nur gering verfälscht
.
@balu: Was du zu MS sagst, dem stimme ich zu, allerdings war diese Datei von Anfang an eine LO Calc .xlsx - das reichte ja schon um Probleme zu machen! :P (Das Ganze war mir wirklich eine Lehre!)

Ich hoffe dieser Thread hilft auch anderen weiter. Das man sich das Programm "verschwurbelt" wenn man erst die Tabelle und dann das Makro einfügt, das muss man auch erstmal wissen... ^^

Das Problem wurde gelöst, der Thread kann geschlossen werden.

Viele Grüße und nochmals besten Dank für die Mühe/Hilfe mit der Sache. :)

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

Re: Makros verschwinden, Fehlermeldung, falsche Farben aus Hexcode

Beitrag von mikele » Mo 9. Jan 2023, 11:22

Hallo,
auch wenn es nicht ganz sinnvoll erscheint, habe ich das Makro mal ein bisschen ergänzt, sodass, wenn die Farbvorlage schon existiert, dort die Hintergrundfarbe noch einmal korrekt neu gesetzt wird.

Code: Alles auswählen

REM  *****  BASIC  *****
Rem
Rem ColorStyles - multicolored cell (create styles)
Rem (©) Vladislav Orlov aka JohnSUN, Kyiv, 2018
Rem This program is free software: you can redistribute it and/or modify
Rem it under the terms of the GNU General Public License as published by
Rem the Free Software Foundation, either version 3 of the License, or
Rem (at your option) any later version.
Rem
Rem This program is distributed in the hope that it will be useful,
Rem but WITHOUT ANY WARRANTY; without even the implied warranty of
Rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Rem GNU General Public License for more details.
Rem
Rem You should have received a copy of the GNU General Public License
Rem along with this program.  If not, see <http://www.gnu.org/licenses/>.
Rem
Rem mailto:johnsun@i.ua

Option Explicit

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
	nCellBackColor = CLng(Replace(sColorCode,"#","&H"))
	oStyleFamilies = ThisComponent.getStyleFamilies()
	oCellStyles = oStyleFamilies.getByName("CellStyles")
	
	If oCellStyles.hasByName(nameNewStyle) Then 
		oCellStyles.getByName(nameNewStyle).setPropertyValue("CellBackColor", nCellBackColor)
		Exit Function ' Present, nothing to do
	end if
	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)
	
	oNewCellStyle.setPropertyValue("CellBackColor", nCellBackColor)
	oNewCellStyle.setPropertyValue("NumberFormat", oBaseCellStyle.NumberFormat)
End Function
Gruß,
mikele

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

Re: Makros verschwinden, Fehlermeldung, falsche Farben aus Hexcode

Beitrag von Makroirre » Di 10. Jan 2023, 06:04

Hallo,

:o coole Sache! Besten Dank, spätenstens wenn es mal wieder Probleme damit geben sollte probiere ich es mal aus! :mrgreen: Wie arbeitet es denn genau? Zu welchen Ereignissen wird die Farbe neu gesetzt?
Ich kann die beiden Makros bei Gelegenheit ja mal vergleichen. :)

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

Re: Makros verschwinden, Fehlermeldung, falsche Farben aus Hexcode

Beitrag von Wanderer » Di 10. Jan 2023, 08:26

Makroirre hat geschrieben:
Di 10. Jan 2023, 06:04
...
Wie arbeitet es denn genau? Zu welchen Ereignissen wird die Farbe neu gesetzt?
...

Mikele hat nur eine Kleinigkeit geändert: Das ursprüngliche Macro hat nichts mehr getan, wenn es feststellte, daß der Farbstiel schon existiert, sondern direkt Exit aufgerufen.
Hier wird zusätzlich nun nochmals der Fabcode in den Style geschrieben.

Code: Alles auswählen

If oCellStyles.hasByName(nameNewStyle) Then 
		oCellStyles.getByName(nameNewStyle).setPropertyValue("CellBackColor", nCellBackColor)
		Exit Function ' Present, nothing to do
	end if
Dies wird ggfs. bei jeder Neuberechnung der Zelle von Calc aufgerufen - es wird also etwas mehr Zeit "verschwendet".
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ LO 6.3.2 Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit


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