Wasserzeichen-Problematik

22/03/2009 - 18:03 von Lothar Geyer | Report spam
Vor làngerer Zeit hatte ich hier gefragt, wie man es aus einer
VB-Anwendung am besten anstellt, einen großen Schriftzug (z.B. "Kopie"
oder "Entwurf") quer über das ganze Blatt zu erstellen. Das Ergebnis war
damals der VB-Kode am Schluss.

Diese Routine wird in folgender Schleife aufgerufen:

For Each sec In myDocument.Sections
For i = wdHeaderFooterPrimary To wdHeaderFooterEvenPages
'For i = 1 To sec.Headers.Count
Set hdr = sec.Headers(i)
If tDruckenAls = vdaEntwurf Then
applyWasserzeichen hdr, "Entwurf"
Else
applyWasserzeichen hdr, "Kopie"
End If
Next i
Next sec

Sinn sollte sein, das Wasserzeichen auf allen Seiten eines Dokuments
anzubringen. Das funktionierte aber nicht - und wir fanden auch keine
Lösung. Nur am Monitor wird die Wasserzeichen-Schrift entsprechend oft
generiert.

Hat sich da an der Sachlage was geàndert?

Lothar Geyer


Private Sub applyWasserzeichen(ByVal hdr As Word.HeaderFooter _
, wzText As String)
Dim shp As Word.Shape
Const msoTextEffect1 As Long = 0
Const msoTextEffect2 As Long = 1

On Error GoTo errHandler

' original aus NG war: FontName:="Arial Black"
Set shp = hdr.Shapes.AddTextEffect( _
PresetTextEffect:=msoTextEffect1, _
Text:=wzText, _
FontName:="Arial", _
FontSize:6, _
FontBold:=msoTrue, _
FontItalic:=msoFalse, _
Left:0, _
Top:0, _
Anchor:=hdr.Range)

With shp
'.Visible = False
.TextEffect.NormalizedHeight = False
.Line.Visible = False
With .Fill
.Visible = True
.Solid
.ForeColor = wdColorAqua
End With
.LockAnchor = True
.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
.RelativeVerticalPosition = wdRelativeVerticalPositionPage
.LockAspectRatio = True
.Height = MSWord.CentimetersToPoints(6)
.Width = MSWord.CentimetersToPoints(16)
.Left = wdShapeCenter
.Top = wdShapeCenter
.Rotation = 315
With .Shadow
.Visible = True
.ForeColor = wdColorGray65
End With
.ZOrder msoSendToBack
'.Visible = True
End With

Exit Sub

errHandler:
If ErrMustStop Then Debug.Assert False: Resume
ErrorIn "clsMSOffice.applyWasserzeichen(hdr,wzText)", Array(hdr, wzText)
End Sub
 

Lesen sie die antworten

#1 Lisa (Nora Richter)
22/03/2009 - 19:34 | Warnen spam
Hallo Lothar

Vor làngerer Zeit hatte ich hier gefragt, wie man es aus einer
VB-Anwendung am besten anstellt, einen großen Schriftzug (z.B. "Kopie"
oder "Entwurf") quer über das ganze Blatt zu erstellen. Das Ergebnis war
damals der VB-Kode am Schluss.

Das funktionierte aber nicht - und wir fanden auch keine
Lösung. Nur am Monitor wird die Wasserzeichen-Schrift entsprechend oft
generiert.



Bei mir funktioniert der gepostete Code einwandfrei. Sowohl Am Monitor
als auch auf dem Ausdruck ist der Schriftzug zu sehen. Auch beim PDF-
Erstellen wird er mitgenommen. Was funktioniert denn nicht?

Gruß
Lisa
_____
http://www.schreibbuero-richter.de/vba.html

Ähnliche fragen