Alle Kopfzeilen verbinden

03/06/2010 - 12:18 von Thomas Hase | Report spam
Hallo NG,

ich suche nach einer Möglichkeit alle Kopfzeilen eines Dokumentes mit
n-Abschnitten so zu gestalten, das sie den Inhalt der ersten Kopfzeile
übernehmen.

hier habe ich folgenden Code gefunden um Kopf und Fußzeilen zu
durchlaufen, aber bei mir scheitert es schon daran, dass ich keine
Beschreibung finde, was ein

Sections-Objekt genau beinhaltet.

Frage 1:
Gibt das Sections-Objekt die Anzahl der Abschnitte in einem Dokument
an?


Set d = ActiveDocument
MsgBox "SectionsCount: " & d.Sections.Count
For s = d.Sections.Count To 1 Step -1
For h = 1 To 3
'd.Sections(s).Headers(h).Range.Delete
'd.Sections(s).Footers(h).Range.Delete
Next
Next


Frage 2: Muss .Headers immer von 1 bis 3 durchlaufen werden?
Steht 1 bis 3 für irgendwelche Konstanten?



Danke

Gruß Thomas
 

Lesen sie die antworten

#1 Thomas Gahler
03/06/2010 - 13:03 | Warnen spam
Hallo Thomas

ich suche nach einer Möglichkeit alle Kopfzeilen eines Dokumentes mit
n-Abschnitten so zu gestalten, das sie den Inhalt der ersten Kopfzeile
übernehmen.


Dazu gibt es die .LinkToPrevious-Eigenschaft vom .Headers-Objekt



Frage 1:
Gibt das Sections-Objekt die Anzahl der Abschnitte in einem Dokument
an?


Nein, das .Sections-Objekt ist eine Aufzàhlung der .Section-Objekte. Ein
.Section-Objekt entspricht einem Abschnitt.
In VBA ist es meinstens so, dass ein Objekt (z.B. Document) in einer
Auflistung vorhanden ist (z.B. Documents). Die erkennst du am Plural,
welcher im englischen meistens mit einem 's' endet.



Frage 2: Muss .Headers immer von 1 bis 3 durchlaufen werden?
Steht 1 bis 3 für irgendwelche Konstanten?


Es gibt drei arten von Kopfzeilen (Standard, ErsteSeite und Ungerade).
Kannst du via Datei/Seite einrichten/Layout beeinflussen. Daher macht es
sinn, grundsàtzlich duch alle drei Kopfzeilen zu gehen. Die sind auch da
wenn sie nicht aktiv sind.

wdHeaderFooterPrimary = 1
wdHeaderFooterFirstPage = 2
wdHeaderFooterEvenPages = 3
(findest du im Objekt-Katalog)



Dein Code könne dann so aussehen.



Sub Demo()
Dim doc As Word.Document
Dim sec As Word.Section
Dim i As Integer

Set doc = ActiveDocument

For Each sec In doc.Sections
For i = wdHeaderFooterPrimary To wdHeaderFooterEvenPages
sec.Range.Select
sec.Headers(i).LinkToPrevious = True
Next i
Next sec
End Sub






Thomas Gahler
Co-Autor von »Microsoft Word-Programmierung.
Das Handbuch« (MS Press)


- Windows XP (SP3), Office XP (SP3)

Ähnliche fragen