Hallo,
vor dem Zugriff auf das Shape "Text Box 2" muss erst getestet werden, ob welche vorhanden sind:
If ActiveDocument.Shapes.Count > 0 Then
'ActiveDocument.Shapes("Text Box 2").Select
'Selection.ShapeRange.Fill.Visible = msoFalse
ActiveDocument.Shapes("Text Box 2").Fill.Visible = msoFalse
End If
Die Auskommentierten Zeilen können eventuell durch den nachfolgenden Befehl ersetzt werden. Das Ergebnis dürfte identisch sein.
Wenn es möglich ist, sollte im VBA-Code auf Select-Anweisungen verzichtet werden. Dadurch läuft dieser performanter und fehlerfreier ab.
Eventuell funktioniert auch folgende VBA-Code:
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
With Selection.HeaderFooter.Shapes.AddTextEffect(PowerPlusWaterMarkObject1, _
"Kopie", "Times New Roman", 1, False, False, 0, 0)
.Name = "PowerPlusWaterMarkObject1"
.TextEffect.NormalizedHeight = False
.Line.Visible = False
.Fill.Visible = True
.Fill.Solid
.Fill.ForeColor.RGB = RGB(192, 192, 192)
.Fill.Transparency = 0.1
.Rotation = 315
.LockAspectRatio = True
.Height = CentimetersToPoints(7.52)
.Width = CentimetersToPoints(15.04)
.WrapFormat.AllowOverlap = True
.WrapFormat.Side = wdWrapNone
.WrapFormat.Type = 3
.RelativeHorizontalPosition = wdRelativeVerticalPositionMargin
.RelativeVerticalPosition = wdRelativeVerticalPositionMargin
.Left = wdShapeCenter
.Top = wdShapeCenter
End With
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
If ActiveDocument.Shapes.Count > 0 Then
'ActiveDocument.Shapes("Text Box 2").Select
'Selection.ShapeRange.Fill.Visible = msoFalse
ActiveDocument.Shapes("Text Box 2").Fill.Visible = msoFalse
End If
Vorteil: Innerhab des With-Abschnitts beziehen sich alle weiteren Befehle auf das angegebene Objekt, das nicht erst markiert werden muss.
Der Selection.HeaderFooter - Befehl kann auch auf die gleiche Art und Weise ersetzt werden, wenn zuvor die genaue Position bekannt ist.
LG, BigBen
|