bisher funktioniert der Code super und ich bedanke mich dafür von Herzen!
Um mein Projekt weiterhin umzusetzen müsste ich nun, aus Excel heraus, folgende Funktionen umsetzen.
- Ich würde gerne alle Shapes.Name auslesen die auf der Activepage sind, quasi durchlaufen und abfragen.
- Dann würde ich gerne die Hauptfarbe der Shapes ändern, Angabe möglichst in RGB.
- Zusätzlich müsste ich einen Schatten, Oben Rechts, 5 pxl, 5 pxl, Deckkraft 5, Schattenverlauf 5 hinzufügen.
- Besteht zusätzlich die Möglichkeite der Funktion der Persepektive über einen vba Code?
ich hänge eine Excel-Datei an.
Die Makros sollten wegen einer Gruppierung für die Effekte (Perspektive und Schatten) in einer bestimmten Reihenfolge ausgeführt werden:
Du wirst noch einige Parameter für Deine Zwecke anpassen müssen.
Durch die Effekte entsteht eine Steuergruppe. Wenn Du nach dem Makro mit einzelnen Objekten weiter arbeiten willst, muss sie aufgelöst werden.
Ich habe den Code der Effekt-Prozedur mit Kommentaren versehen. So solltest Du die Parameter finden:
Code:
Sub Effekte()
Dim CDraw As Object, s As Object
Dim Effekt
Set CDraw = CDrawObj
CDraw.ActiveDocument.Unit = 3
' Gruppieren um allen Objekten gemeinsam Perspektive und Schtten zu verleihen:
Set s = CDrawObj.ActivePage.Shapes.All.Group
'Perspektive:
Set Effekt = s.CreatePerspective(s.CenterX, s.CenterY)
Effekt.Perspective.HorizVanishingPointX = s.LeftX - s.SizeWidth * 5 '(X-Koordinate des horizontalen Fluchtpunkts)
'Schatten:
Set Effekt = s.CreateDropShadow(0, , , , , CDraw.CreateCMYKColor(0, 0, 0, 100), , , , , , 0)
With Effekt.DropShadow
.OffsetX = 5 ' X-Abstand
.OffsetY = 5 ' Y-Abstand
.MergeMode = 9 'Zusammenführungsmodus
.Opacity = 5 'Deckkraft
.Feather = 5 'Verlauf
End With
End Sub
Der Abstand des horizontalen Fluchtpunkts ist mit der fünffachen Breite des Objekts angegeben. Den Faktor musst Du Deinen Bedürfnissen anpassen oder den Abstand anders angeben.
Wenn Du die Effekte nicht allen Objekten gemeinsam, sondern jedem Objekt einzeln zuweisen willst, musst Du das in einer Schleife abarbeiten lassen. Die Gruppierung fällt dann weg.
der Schatten funktioniert nun super mit allen Erklärungen und ich habe es endlich gerafft, Danke dafür!!!
Kannst du mir so etwas individuell einstellbares für die Persepktive machen, am besten mit Erklärung, wieder aus Excel heraus.
Leider habe ich es nichtmal hinbekommen, die Perspektive zu "spiegeln" also auf der anderen Seite, wie im aktuellen Code.
(Funktionieren tut es), aber wie dort die Einstellangaben sind ist mir schleierhaft.
ich weiß leider nicht, was „individuell einstellbar“ bedeuten soll.
Bei Deiner Vorgabe ist nur ein Fluchtpunkt nötig.
Der Zweizeiler reicht also:
Code:
'Perspektive:
Set Effekt = s.CreatePerspective(s.CenterX, s.CenterY)
Effekt.Perspective.HorizVanishingPointX = s.LeftX - s.SizeWidth * 5 '(X-Koordinate des horizontalen Fluchtpunkts)
Die erste Zeile fügt die Perspektive mit den Fluchtpunktkoordinaten im Zentrum des Objekts hinzu.
Die zweite Zeile verschiebt die X-Koordinate horizontalen Fluchtpunkts.
Es ginge auch mit einer Zeile, dass würde aber ein wenig unübersichtlich.
Falls Du das Folgende nicht verstanden hast...
(07.03.2022, 17:26)koter schrieb: ...Der Abstand des horizontalen Fluchtpunkts ist mit der fünffachen Breite des Objekts angegeben. Den Faktor musst Du Deinen Bedürfnissen anpassen oder den Abstand anders angeben...
... hier ein Bild zur Erklärung:
Der Faktor ist die Fünf.
(10.03.2022, 14:41)StefanA1987 schrieb: Leider habe ich es nichtmal hinbekommen, die Perspektive zu "spiegeln" also auf der anderen Seite, wie im aktuellen Code.
Dazu musst Du den Fluchtpunkt nur auf die andere Seite setzen:
danke für deine spitzen Erklärung und ich habe endlich gecheckt was überhaupt der VanishingPoint ist.... Danke dafür, stand total aufm Schlauch, es funktioniert, wie immer, super!!!
Nun zwei weitere Fragen...
1. Ich habe eine CorelDraw Vorlage (.cdt) offen und möchte diese gerne als CorelDraw Datei (.cdr) in einen bestimmten Pfad speichern.
2. Dann habe ich eine CorelDraw Datei (.cdr) offen und möchte diese gerne als eine (.eps)-Datei in einen bestimmten Pfad speichern.
Das ganze natürlich wieder aus Excel heraus :-) Danke!!!
(11.03.2022, 16:09)StefanA1987 schrieb: 1. Ich habe eine CorelDraw Vorlage (.cdt) offen und möchte diese gerne als CorelDraw Datei (.cdr) in einen bestimmten Pfad speichern.
Wenn Du eine Datei aus der Vorlage erstellst, ist das schon eine CDR. Eine CDT zu öffnen und dann als CDR zu speichern ist also nicht nötig.
(11.03.2022, 16:09)StefanA1987 schrieb: 2. Dann habe ich eine CorelDraw Datei (.cdr) offen und möchte diese gerne als eine (.eps)-Datei in einen bestimmten Pfad speichern.
Code:
Sub EPSExport()
Dim CDraw As Object
Dim epsDatei As String
1. Ich habe eine CorelDraw Vorlage (.cdt) offen und möchte diese gerne als CorelDraw Datei (.cdr) in einen bestimmten Pfad speichern. Wie soll ich das machen, mit der Save Methode, SaveAs? Eigenschaften? Bitte bitte ein Beispiel wie immer.
2. Eigentlich möchte ich nur Alle Objekte auf der Seite horizontal Spiegeln und zwar so:
CDraw.ActiveDocument.ActiveLayer.SelectableShapes.All.Flip cdrFlipHorizontal
Funktioniert aber nicht, bringt aber keinen Fehler... was ist da los? :-)
Koter, ich bin so gut wie am Ende meines Projektes und meine Belästigungen hören bald auf, versprochen!
Danke für die extrem schnellen und kompetenten Antworten
(12.03.2022, 11:36)StefanA1987 schrieb: ...ich bin so gut wie am Ende meines Projektes und meine Belästigungen hören bald auf, versprochen!...
Du belästigst mich nicht, würdest Du das tun, würde ich einfach nicht mehr antworten.
Falls es nicht geheim ist: Was ist das für ein Projekt? (jetzt hast Du mich neugierig gemacht)
(12.03.2022, 11:36)StefanA1987 schrieb: 1. Ich habe eine CorelDraw Vorlage (.cdt) offen und möchte diese gerne als CorelDraw Datei (.cdr) in einen bestimmten Pfad speichern. Wie soll ich das machen, mit der Save Methode, SaveAs? Eigenschaften? Bitte bitte ein Beispiel wie immer.
Die Vorlage gar nicht öffnen, sondern eine CDR daraus erstellen und diese speichern:
Code:
Sub AusVorlage()
Dim Doc As Object, CDraw As Object
Dim Vorlage As String, Dateiname As String
Set CDraw = CDrawObj
Set Doc = CDraw.CreateDocumentFromTemplate(Vorlage, True) 'Dokument aus Vorlage erstellen
Doc.SaveAs Dateiname, Nothing 'Dokument speichern
Set CDraw = Nothing
End Sub
(12.03.2022, 11:36)StefanA1987 schrieb: 2. Eigentlich möchte ich nur Alle Objekte auf der Seite horizontal Spiegeln und zwar so:
CDraw.ActiveDocument.ActiveLayer.SelectableShapes.All.Flip cdrFlipHorizontal
Funktioniert aber nicht, bringt aber keinen Fehler... was ist da los? :-)
Da kann ich nur raten: Vielleicht hat die Variable „cdrFlipHorizontal“ den Wert 0.