#

Word vba-Makro: WordArt mit Glow-Effect und Shadow verändern
 
In Microsoft Word und Office kann man freie Linien zeichnen und frei schwebende Texte erzeugen.
Frei schwebende Texte werden in Word als WordArt geführt.
Beide Anzeigeelemente sind in Word vba Code unter Shapes zu finden.
Der folgenden Block zeigt ein vba Word Makro, mit welchem die Word Linien und WordArt Elemente zur Laufzeit in verändert werden können.

 
Word Texte:
Frei bewegliche Texte kann man einfügen unter Ribbonbar->Einfügen->WordArt->Auswählen

 
Die Linien werden mit Einfügen->Formen->Pfeil eingefügt.

 
Wenn man die Word Linien und TextObjekte ändern möchte, dann durchläuft man am besten einen Loop durch alle Shapes.
Sobald Shapes vorhanden sind, kann man diese am Shape.Type unterscheiden in msoLine oder in msoTextBox.
WordArt-Objekte befinden sich im Innern eines msoTextBox Elementes.

 
Function set_Glow()
'--------< Set_Glow >--------
'< init >
Dim doc As Document
Set doc = ActiveDocument
'</ init >

'----< @Loop: All Shapes >----
Dim ctlShape As shape
 
For Each ctlShape In doc.Shapes
'----< @Loop: InlineShapes >----
If ctlShape.Type = msoLine Then
'--< Line >--

'--</ Line >--
ElseIf ctlShape.Type = msoTextBox Then
'--< WordArt >--
..
'--</ WordArt >--
End If
'----</ @Loop: InlineShapes >----
Next
'----</ @Loop: All Shapes >----
 
'--------</ Set_Glow >--------
End Function

 
 
Mit der Eigenschaft Linie.Glow kann man das Leuchten rund um eine Linie anpassen

'--< Line >--
ctlShape.Glow.Color.ObjectThemeColor = wdThemeColorAccent5
ctlShape.Glow.Color = 61695
ctlShape.Glow.Radius = 8
ctlShape.Glow.Transparency = 0.6
 
ctlShape.Line.EndArrowheadWidth = msoArrowheadWide
ctlShape.Line.EndArrowheadLength = msoArrowheadLong
ctlShape.Line.EndArrowheadStyle = msoArrowheadTriangle
'--</ Line >--

 
Dabei prüft man die besten Einstellungen am Besten in der Laufzeit indem man einen Breakpoint im Code setzt und den aktuellen Glow-Eigenschaften ausliest.

 
Die Programmierung von WordArte Elementen ist ein wenig trickreicher.
Diese befinden sich innerhalb eines TextBox Elementes als TextBox.TextFrame.TextRange
Sobald man den TextRange als Range übernommen hat, kann man wiederum den Font mit der Füllfarbe und die Umrandung mit Font.Glow verändern.

Dim shapeText As range
Set shapeText = ctlShape.TextFrame.TextRange
shapeText.Font.Fill.ForeColor.RGB = RGB(255, 0, 0)
shapeText.Font.Glow.Color.ObjectThemeColor = 2
 

 
Als Video Anleitung: Word: WordArt Glow and Shadow (Design and vba Macro)

 
 
Word vba Makro Code zum Ändern von frei schwebenden Linien und WordArt-Texten:

 
Function set_Glow()
'--------< Set_Glow >--------
'< init >
Dim doc As Document
Set doc = ActiveDocument
'</ init >

'----< @Loop: All Shapes >----
Dim ctlShape As shape
 
For Each ctlShape In doc.Shapes
'----< @Loop: InlineShapes >----
If ctlShape.Type = msoLine Then
'--< Line >--
ctlShape.Glow.Color.ObjectThemeColor = wdThemeColorAccent5
ctlShape.Glow.Color = 61695
ctlShape.Glow.Radius = 8
ctlShape.Glow.Transparency = 0.6
ctlShape.Line.EndArrowheadWidth = msoArrowheadWide
ctlShape.Line.EndArrowheadLength = msoArrowheadLong
ctlShape.Line.EndArrowheadStyle = msoArrowheadTriangle
'--</ Line >--
ElseIf ctlShape.Type = msoTextBox Then
'--< WordArt >--
Dim shapeText As range
Set shapeText = ctlShape.TextFrame.TextRange
shapeText.Font.Fill.ForeColor.RGB = RGB(255, 0, 0)
shapeText.Font.Glow.Color.ObjectThemeColor = 2
shapeText.Font.Glow.Color = 61695
shapeText.Font.Glow.Radius = 8
shapeText.Font.Glow.Transparency = 0.6
 
shapeText.Font.TextShadow.Blur = 5
shapeText.Font.TextShadow.OffsetX = 2
shapeText.Font.TextShadow.OffsetY = 2
shapeText.Font.TextShadow.Transparency = 0.5
'--</ WordArt >--
End If
'----</ @Loop: InlineShapes >----
Next
'----</ @Loop: All Shapes >----
 
'--------</ Set_Glow >--------
End Function

 
Mobile

.