beidermachtvongreyscull
Goto Top

Word: Per VBA ab der 2. Seite auf jeder Seite das gleiche Hintergrundbild einfügen

Tag Kollegen,

ich habe folgenden VBA-Code:

Private Sub BKOP()
frmBrieKo1.Frame1.Visible = True
Seiten = ActiveDocument.ComputeStatistics(wdStatisticPages) - 1 'Gesamtzahl der Seiten minus die erste  
frmBrieKo1.Label5.Visible = True
Set Rng = ActiveDocument.Range(0, 0)
For i = 2 To ActiveDocument.ComputeStatistics(wdStatisticPages) 'Start bei i=2, da erste Seite die Briefkopfseite ist  
frmBrieKo1.Label5.Caption = Seiten
DoEvents
Set Rng = Rng.GoTo(What:=wdGoToPage, name:=i)
Set Rng = Rng.GoTo(What:=wdGoToBookmark, name:="\page")  
Rng.Collapse wdCollapseStart
Dim a As Shape
Set a = ActiveDocument.Shapes.AddPicture("\\SRV2\Vorlagen\Briefpapier\Folgeseiten.jpg", _  
False, True, , , , , Rng)
'a.Left = 0  
'a.Top = 0  
a.WrapFormat.Type = wdWrapNone
a.WrapFormat.Side = wdWrapBoth
a.LockAspectRatio = msoTrue
a.Height = 802.2
a.Width = 598.5
a.PictureFormat.Brightness = 0.5
a.PictureFormat.Contrast = 0.5
a.PictureFormat.ColorType = msoPictureAutomatic
a.PictureFormat.CropLeft = 0#
a.PictureFormat.CropRight = 0#
a.PictureFormat.CropTop = 0#
a.PictureFormat.CropBottom = 0#
'a.Left = 0#  
'a.Top = 0#  
a.RelativeHorizontalPosition = _
        wdRelativeHorizontalPositionPage
a.RelativeVerticalPosition = _
        wdRelativeVerticalPositionPage
a.Left = CentimetersToPoints(snglLeftOffset)
a.Top = CentimetersToPoints(snglTopOffset)
a.LockAnchor = False
a.WrapFormat.AllowOverlap = True
a.WrapFormat.Side = wdWrapBoth
a.WrapFormat.DistanceTop = CentimetersToPoints(0)
a.WrapFormat.DistanceBottom = CentimetersToPoints(0)
a.WrapFormat.DistanceLeft = CentimetersToPoints(0)
a.WrapFormat.DistanceRight = CentimetersToPoints(0)
a.WrapFormat.Type = 3
a.ZOrder 5
a.PictureFormat.TransparentBackground = msoTrue
a.PictureFormat.TransparencyColor = RGB(255, 255, 255)
a.Fill.Visible = False
Set a = Nothing
Seiten = Seiten - 1
Next
End Sub

Kurz zur Erklärung, was der Code macht:
  • Ab Seite 2 soll auf jeder Seite ein Bild mittig in den Hintergrund zentriert und auf das Seitenformat angepasst werden.
  • Das Modul aktualisiert dabei ein Label-Feld im dazugehörenden Formular.

Das Problem:
Es funktioniert nicht bei allen Word-Dokumenten. Ich setze Word 2010 ein. Ich habe zwei Testdokumente. Eins mit 9 Seiten. Dort funktioniert der Code, wie gewünscht und fügt einschließlich Seite 2 auf allen Folgeseiten das Hintergrundlogo ein.

Ein weiteres Testdokument hat 45 Seiten. Dort passiert folgendes:
Der Code fügt 45 mal auf der ersten Seite das Hintergrundlogo ein.

Ich verstehe nicht, warum er das tut.

Hat jemand von Euch eine Idee, wo mein Fehler liegt?

Content-Key: 387551

Url: https://administrator.de/contentid/387551

Ausgedruckt am: 19.03.2024 um 02:03 Uhr

Mitglied: 137289
Lösung 137289 25.09.2018 aktualisiert um 17:41:56 Uhr
Goto Top
Hi.
Ich würde hier ansetzen
Set Rng = Rng.GoTo(What:=wdGoToPage, name:=i) 
Statt name den Parameter count verwenden.
Set Rng = Rng.GoTo(What:=wdGoToPage, Which:=wdGoToAbsolute, count:=i) 
Ab Seite 2 soll auf jeder Seite ein Bild mittig in den Hintergrund zentriert und auf das Seitenformat angepasst werden.
Füge das doch gleich in einer Kopf oder Fußzeile ein, dann reicht auch es einmal einzufügen face-smile.

Gruß speedlink

p.s. Code entsprechend übersichtlich formatieren hilft ungemein auch wenn man später mal wieder ran muss...
Mitglied: beidermachtvongreyscull
beidermachtvongreyscull 25.09.2018 um 17:54:44 Uhr
Goto Top
Vielen Dank für Deinen Tipp.

In Kopf oder Fußzeile einfügen müsste ich u.U. dann auch auf verschiedenen Seiten, da die Formatierung bei verschiedenen Dokumenten leider nicht durchgängig ist und die Kopf- und Fußzeilen zur entsprechenden vorangehenden Seite gelöst sind.

Den Code hübsche ich noch auf. Sorry, ich hatte hier nicht daran gedacht.
Mitglied: beidermachtvongreyscull
beidermachtvongreyscull 26.09.2018 um 11:31:20 Uhr
Goto Top
Nochmals vielen Dank für Deinen Tipp!

Ich bin ein gutes Stück näher am Ziel, habe aber noch ein Problem.

Beim Testdokument befindet sich auf den Seiten 2 und 3 ein automatisches Inhaltsverzeichnis. Auf Seite 3 wird das Logo nicht eingefügt, auf Seite 2 dafür doppelt (übereinander).

Dann habe ich eine Tabelle, die sich teils über drei Seiten erstreckt. Auf den ersten beiden Seiten davon fehlt das Bild ebenfalls. Auf der letzten ist es dann da.

Hast Du eine Idee, warum der Algorithmus diese Seiten überspringt?
Mitglied: 137289
137289 26.09.2018 um 12:28:11 Uhr
Goto Top
Stichwort: Abschnitte (Sections).
Deswegen sagte ich ja, durchlaufe alle Abschnitte per Schleife und verarbeite dann die Seiten der Abschnitte (In die Kopf oder Fußzeile der Abschnitte einfügen).