Farbe mehrerer Shapes ändern

Die Farbe einer einfarbigen kannst du mit dem folgenden Script bestimmen. Mir ist keine andere Möglichkeit bekannt. Ist sicher nicht das Non-Plus-Ultra, aber funktioniert. An einer einfacheren Lösung bin ich auch intressiert, konnte dazu aber nirgendwo was finden.
Um die Farbe zu ändern, hab ich bis auf den "Sendkeys"-Befehl auch keine Idee. Würde mich aber auch interessieren.

Hier zur Farbbestimmung (die farbe wird als Vordergrundfarbe gesetzt):
Code:
Dim appref, docref,startRulerUnits, startTypeUnits,  farbe(3), i, k

Set appref = CreateObject("Photoshop.Application")

If appref.Documents.count<>0 Then
	Set docref=appref.ActiveDocument
Else
	MsgBox "Erst eine Datei öffnen!"
	WScript.Quit
End If

startRulerUnits = appRef.Preferences.RulerUnits
startTypeUnits = appRef.Preferences.TypeUnits

appref.Preferences.RulerUnits = 1
appref.Preferences.TypeUnits = 1

For i = 1 To 3
    farbe(i - 1) = getcolor(docref.Channels(i).Histogram)
Next
appref.foregroundcolor.RGB.Red = farbe(0)
appref.foregroundcolor.RGB.Green = farbe(1)
appRef.foregroundcolor.RGB.Blue = farbe(2)

appRef.Preferences.RulerUnits = startRulerUnits
appRef.Preferences.TypeUnits = startTypeUnits

Private Function getcolor(inputarray)
    For k = 1 To UBound(inputarray)
        If inputarray(k) > 0 Then Exit For
    Next
    getcolor = k
End Function

Gruß hotschen
 
Hi hotschen!

Vielen Dank für Dein Script! :)
...geholfen hat es mir leider nicht: mir geht es ja nur um das "Setzen" der Farbe und trotz Deiner Hinweise bin ich total gescheitert... ich komme einfach nicht an das "kind = SolidColor"-Objekt heran - was ja beim "textitem" ohne Probleme funktioniert - und scheine somit schon an den Scripting-Basics zu scheitern :(
Aber zum Glück läßt sich ja ein PS-Scripting-Unvermögen durch reinen "Fleiß" ersetzen und diesem werde ich mich in Zukunft wieder voll hingeben :)

Ich danke Euch allen für Eure Hilfe,
Liebe Grüße,
Mark.
 
Wenns dir nur ums füllen geht....warum sendest du nicht die Tastenkombination an PS?
Code:
set k = wscript.Createobject("wscript.Shell")
k.AppActivate "Adobe Photoshop"   'Anwendung in Vordergrund holen
WScript.sleep 1000  'kleine Pause bis PS in Vordergrund
k.Sendkeys "%{BS}"  'Strg+Backspace senden (Füllen mit Vordergrundfarbe)
 
Zurück