Hallo Oswald,
OsCor schrieb:...man wünscht sich ein Makro oder wenigstens das Wissen, wie man eine derartige Fragestellung mit VBA löst.
Du hast als erfahrener Delphi-Programmierer gute Voraussetzungen Dir VBA anzueignen.
Schlüsselwörter und Syntax sind ja sehr ähnlich!
Beispiel:
Code:
String-Variablen, mit Delphi deklarieren:
var Schrift1, Schrift2: string;
String-Variablen, mit VBA deklarieren:
Dim Schrift1 As String, Schrift2 As String
______________________________________
Wertzuweisung mit dem With Statement in Delphi:
With schatten do
begin
Opacity := 55;
Feather := 23.5;
OffsetX := 1.5;
OffsetY := 1.5;
end;
Wertzuweisung mit dem With Statement in VBA:
With schatten
.Opacity = 55
.Feather = 20
.OffsetX = 1.5
.OffsetY = -2
End With
______________________________________
Schleife ohne Laufvariable mit Delphi:
for seite in AD.Pages do
begin
// mach was
end;
Schleife ohne Laufvariable mit VBA:
For Each seite In AD.Pages
' mach was
Next
Du musst natürlich das Corel-Objektmodell kennenlernen aber Die Grundlagen wie Variablen, Objektorientierung, Kontrollstrukturen usw. beherrscht Du ja schon.
Beispiel 1) dem ausgewälten Objekt einen Schatten zuweisen:
Code:
Sub schatten1()
'Objekte Deklarieren:
Dim s As Shape
Dim e As Effect
Dim schatten As EffectDropShadow
'Objektverweise herstellen
Set s = ActiveShape
Set e = s.CreateDropShadow
Set schatten = e.DropShadow
'Die Maßeinheit bestimmen (für den Offset):
ActiveDocument.Unit = cdrMillimeter
'Werte setzen
With schatten
.Opacity = 55 'roter Kreis Nr. 2 in Deinem Screenshot
.Feather = 20 'roter Kreis Nr. 3 in Deinem Screenshot
'nicht nummerierter roter Kreis in Deinem Screenshot:
.OffsetX = 1.5
.OffsetY = -2
End With
End Sub
Beispiel 2) jedem (nicht gruppierten) Text, mit der Schrift "Book Antiqua", auf allen Seiten des Dokuments den Schatten des ausgewählen Objekts zuweisen:
Code:
Sub SchriftSchatten()
Dim Schrift1 As String, Schrift2 As String
Dim AD As Document
Dim seite As Page
Dim s As Shape, s1 As Shape
Dim e As Effect, e2 As Effect
Dim schatten As EffectDropShadow
Dim schatten2 As EffectDropShadow
Set s1 = ActiveSelectionRange.Shapes(1)
For Each e In s1.Effects
If e.Type = cdrDropShadow Then
Set schatten = e.DropShadow
End If
Next
Schrift = "Book Antiqua"
Set AD = ActiveDocument
For Each seite In AD.Pages
For Each s In seite.Shapes.All
If s.Type = cdrTextShape Then
If s.Text.Story.Font = Schrift Then
If s.StaticID <> s1.StaticID Then
Set e2 = s.CreateDropShadow
Set schatten2 = e2.DropShadow
With schatten2
.Opacity = schatten.Opacity
.Feather = schatten.Feather
.OffsetX = schatten.OffsetX
.OffsetY = schatten.OffsetY
End With
End If
End If
End If
Next
Next
End Sub
Das Makro ist ziemlich nutzlos, es soll nur als Beispiel und Anregung dienen.
Vielleicht hilft Dir das beim Einstieg in VBA.
Bei Deiner Aufgabe ist Unkrauts Tip, oder aber „Effekt klonen“ wahrscheinlich rationeller als ein Makro zu basteln.
Gruß
Koter