Word: Per VBA ab der 2. Seite auf jeder Seite das gleiche Hintergrundbild einfügen
Tag Kollegen,
ich habe folgenden VBA-Code:
Kurz zur Erklärung, was der Code macht:
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?
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?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 387551
Url: https://administrator.de/forum/word-per-vba-ab-der-2-seite-auf-jeder-seite-das-gleiche-hintergrundbild-einfuegen-387551.html
Ausgedruckt am: 31.03.2025 um 16:03 Uhr
4 Kommentare
Neuester Kommentar

Hi.
Ich würde hier ansetzen
Statt name den Parameter count verwenden.
.
Gruß speedlink
p.s. Code entsprechend übersichtlich formatieren hilft ungemein auch wenn man später mal wieder ran muss...
Ich würde hier ansetzen
Set Rng = Rng.GoTo(What:=wdGoToPage, name:=i)
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 Gruß speedlink
p.s. Code entsprechend übersichtlich formatieren hilft ungemein auch wenn man später mal wieder ran muss...

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).
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).