ist es möglich ein Bild welches ich per VBA generieren zu bearbeiten?
Ich habe einen simplen Code welcher mir einrn QR-Code generiert und als Bilddatei ausgibt. Diesen QR-Code möchte ich statt dem klassischen Schwarz auf Weiß z.B. Grau auf Weiß darstellen (z.B. Helligkeit höher oder Kontrast). Ist dies per VBA möglich? Wenn ja wie?
13.09.2023, 09:21 (Dieser Beitrag wurde zuletzt bearbeitet: 13.09.2023, 10:00 von HKindler.)
Hi,
eigentlich wollt ich ja antworten: "Alles was du per Hand in Excel sebst erledigen kannst, kannst du auch mit VBA machen. Also nimm den Makrorekorder und zeichne damit deine händischen Schritte auf. Schon hast du ein Gerüst für dein Makro." Allerdings zeichnet der Rekorder Bildbearbeitungsbefehle wie erhöhen der Helligkeit nicht auf. Was jetzt nicht heißt, dass VBA das nicht kann.
Eine kleine Rechere in den Objekteigenschaften hat gezeigt, dass z.B. ActiveSheet.Shapes(1).PictureFormat.Brightness die Helligkeit eines Bildes ändert. 0.5 wäre normal, 0 ist komplett Schwarz und 1 ist komplett weiß.
Aber wieso nachträglich etwas ändern? ich würde bereits beim generieren des QR-Codes ansetzen. Wie sieht denn jenes Makro aus?
Irgendwie stellt sich mir die Frage nach dem Hintergrund deiner Frage. Durch ein Verringern des Kontrastes (nichts anderes ist das Verwenden von Grau/Weiß statt Schwarz/Weiß) verringerst du auch die Lesbarkeit des Codes. Und das will man ja im Allgemeinen eher nicht haben.
(was dein Code ja effektiv darstellt) gleich doppelt auf die Finger zu hauen, sondern verrate dir gleich, dass du statt des von dir rot markierten Teils vielleicht besser
Code:
.PictureFormat.Brightness = 0.7
verwenden solltest…
Übrigens ein klein wenig mitdenken ist nicht verboten!
13.09.2023, 20:09 (Dieser Beitrag wurde zuletzt bearbeitet: 13.09.2023, 20:12 von HKindler.)
Hi,
Was heißt „funktioniert nicht“? Wenn sich nichts ändert, brauchst du dich nicht wundern, denn 0.5 ist die Normalstellung. 0.4 wäre etwas dunkler, 0.6 etwas heller.
Außerdem solltest du „on error resume next“ auskommentieren oder nach dem xxx.Delete mit „on error goto 0“ wieder einschalten.