Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Per VBA Farbton einer Grafik ändern

Forumthread: Per VBA Farbton einer Grafik ändern

Per VBA Farbton einer Grafik ändern
06.10.2012 18:10:22
Günther
Hallo,
Über die Excel 2010 Oberfläche kann man von einer eingefügten Grafik den Farbton ändern: Bildtools|Anpassen|Farbe|Farbton ... z.B. 4700K oder 5300K etc.
Wie kann ich selbiges per VBA einstellen?
Aufzeichnen liefert leider keinen Code und bei den ShapeRange-Eigenschaften scheint diese Einstellung nicht dabei zu sein?
Wäre genial, wenn jemand eine Lösung kennt!
Vielen herzlichen Dank im voraus
Günther

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Per VBA Farbton einer Grafik ändern
06.10.2012 18:41:28
Josef

Hallo Günther,
Sub Makro1()
  Dim objShp As Picture
  
  Set objShp = ActiveSheet.Pictures("Grafik 1")
  
  With objShp
    .ShapeRange.Fill.PictureEffects.Item(1).EffectParameters("ColorTemperature").Value = 4700
  End With
  
End Sub



« Gruß Sepp »

Anzeige
AW: Per VBA Farbton einer Grafik ändern
06.10.2012 19:45:43
Günther
Hallo Sepp,
Vielen herzlichen Dank.
Dein Makro stürzte zwar bei frisch eingefügten Grafiken ab, aber den Weg zu folgendem Befehl habe ich Dank Deines Hinweises selbst gefunden:
.ShapeRange.Fill.PictureEffects.Insert(msoEffectColorTemperature).EffectParameters(1).Value = 3000
Grüße Günther

Anzeige
AW: Per VBA Farbton einer Grafik ändern
07.10.2012 13:45:31
Matze,Matthias
Hallo Günther,
deine Antwort steht auf offen, wir wissen nur noch nicht warum?
Du schreibst das Makro stürzt ab. Hat es eine Fehlermeldung,wenn ja welche?
Oder hast du mehere Shapes in der Datei?... Info, dann gehts eventuell weiter.
Warum benutzt du Excel zur Bildbearbeitung...da gibt es doch schönere Sachen.
Ich frag mich warum Josef nicht nachgehakt hat?
Gruß Matze

Anzeige
AW: Per VBA Farbton einer Grafik ändern
08.10.2012 00:23:36
Günther
Tschuldigung, habe das Hackerl gesetzt, als ich nach dem Absturz noch nicht weiter gewusst habe und danach vergessen, es zu deaktivieren.
Dass das Makro von Sepp bei einer frisch eingefügten Grafik abstürzt, ist selbstverständlich, da versucht wird, eine noch nicht angelegte Eigenschaft anzusprechen. Ich habe dann mit folgedem Code gearbeitet:
On Error Resume Next
'bei weiteren Malen
Selection.InlineShapes(1).Fill.PictureEffects.Item(1).EffectParameters("ColorTemperature").Value = 3900
'bei ersten Mal
If Err.Number 0 Then
Selection.InlineShapes(1).Fill.PictureEffects.Insert(msoEffectColorTemperature).EffectParameters(1).Value = 3900
End if
(Für Insider ist damit natürlich sofort erkennbar, dass es sich um Word-VBA handelt und somit in diesem Forum eigentlich nichts verloren hat - aber ich kenne kein Word-Forum, dass auch nur annähernd so professionell betreut wird wie dieses Forum :-))
Leider hatte die Sache noch einen entscheidenden Hacken: Wenn man das Makro auf 5-6 Bilder anwendet, kann Word das Dokument nicht mehr abspeichern :-( Man kommt beim Speichern in den "Speichern unter"-Dialog und kann dort entweder auf Abbrechen klicken (und anschließend das Dokument ohne Speichern schließen) oder einen Dateinamen angeben, was aber nichts weiter bewirkt, als dass man gleich wieder im selben Dialog landet = Unendlichschleife ...
Ich dachte zunächst, dass dann doch mein Makro Käse ist, aber derselbe Effekt tritt (zumindest in diesem Dokument) genauso auf, wenn man den Farbton per Menüband manuell verändert - Word läßt grüßen ...
Wenn ich vorher gewusst hätte, was das für ein Theater wird, hätte ich die rund 150 Fotos zuerst in einem Bildbearbeitungsprogramm angepasst. Aber da die Fotos ohnehin per VBA eingefügt werden, dachte ich halt, ich geb dort einfach den einen Befehl dazu ... (naja, nachher ist man immer klüger ...)
Grüße und nochmals Dank für die Unterstützung
Günther
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Farbton einer Grafik in Excel per VBA ändern


Schritt-für-Schritt-Anleitung

Um die Farbe einer Grafik in Excel per VBA zu ändern, kannst du die folgenden Schritte befolgen:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden VBA-Code ein:

    Sub Makro1()
        Dim objShp As Picture
        Set objShp = ActiveSheet.Pictures("Grafik 1")
    
        With objShp
            .ShapeRange.Fill.PictureEffects.Item(1).EffectParameters("ColorTemperature").Value = 4700
        End With
    End Sub
  4. Ändere "Grafik 1" in den Namen deiner Grafik, falls notwendig.

  5. Schließe den VBA-Editor und führe das Makro aus.


Häufige Fehler und Lösungen

  • Makro stürzt ab: Wenn das Makro bei frisch eingefügten Grafiken abstürzt, kann dies daran liegen, dass die Grafik noch nicht vollständig initialisiert ist. Verwende On Error Resume Next, um den Fehler zu ignorieren und den Code fortzusetzen.

    On Error Resume Next
    Selection.InlineShapes(1).Fill.PictureEffects.Item(1).EffectParameters("ColorTemperature").Value = 3900
    If Err.Number <> 0 Then
        Selection.InlineShapes(1).Fill.PictureEffects.Insert(msoEffectColorTemperature).EffectParameters(1).Value = 3900
    End If
  • Unendliche Schleife beim Speichern: Wenn du mehrere Grafiken bearbeitest und das Dokument nicht mehr speichern kannst, kann es hilfreich sein, die Grafiken zuerst in einem Bildbearbeitungsprogramm anzupassen, bevor du sie in Excel einfügst.


Alternative Methoden

Falls du keine VBA-Makros verwenden möchtest, kannst du den Farbton jeder Grafik manuell über die Excel-Oberfläche ändern:

  1. Klicke auf die Grafik, die du ändern möchtest.
  2. Wähle im Menü Bildtools die Registerkarte Anpassen.
  3. Gehe zu Farbe und wähle Farbton, um die gewünschte Einstellung vorzunehmen.

Diese Methode ist einfach, aber nicht automatisiert und eignet sich besser für einmalige Anpassungen.


Praktische Beispiele

Hier sind einige Beispiele, wie du den Farbton einer Grafik ändern kannst:

  1. Farbton auf 3000K einstellen:

    Sub SetColorTemperature3000K()
        Dim objShp As Picture
        Set objShp = ActiveSheet.Pictures("Grafik 1")
    
        With objShp
            .ShapeRange.Fill.PictureEffects.Item(1).EffectParameters("ColorTemperature").Value = 3000
        End With
    End Sub
  2. Farbton auf 5300K einstellen:

    Sub SetColorTemperature5300K()
        Dim objShp As Picture
        Set objShp = ActiveSheet.Pictures("Grafik 2")
    
        With objShp
            .ShapeRange.Fill.PictureEffects.Item(1).EffectParameters("ColorTemperature").Value = 5300
        End With
    End Sub

Tipps für Profis

  • Fehlerbehandlung: Implementiere On Error Resume Next, um Probleme beim Ausführen des Codes zu umgehen und das Skript benutzerfreundlicher zu gestalten.
  • Namen der Grafiken: Achte darauf, dass der Name der Grafik genau übereinstimmt. Du kannst Grafiken in Excel umbenennen, um Verwirrung zu vermeiden.
  • VBA-Referenzen: Stelle sicher, dass du die richtigen Referenzen in deinem VBA-Projekt gesetzt hast, falls du mit externen Bildbearbeitungsbibliotheken arbeitest.

FAQ: Häufige Fragen

1. Kann ich den Farbton mehrerer Grafiken gleichzeitig ändern?
Ja, du kannst eine Schleife verwenden, um mehrere Grafiken zu durchlaufen und den Farbton für jede Grafik anzupassen.

2. Funktioniert dieser Code in Excel 2010?
Ja, der bereitgestellte Code wurde für Excel 2010 entwickelt, sollte aber auch in neueren Versionen funktionieren. Achte darauf, dass die entsprechenden Methoden und Objekte in deiner Version verfügbar sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige