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