Discussion:
Alle Kopfzeilen verbinden
(zu alt für eine Antwort)
Thomas Hase
2010-06-03 10:18:33 UTC
Permalink
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
Thomas Gahler
2010-06-03 11:03:04 UTC
Permalink
Hallo Thomas
Post by Thomas Hase
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
Post by Thomas Hase
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.
Post by Thomas Hase
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)
Thomas Hase
2010-06-03 13:31:05 UTC
Permalink
Hallo Thomas, vielen vielen Dank,
ich arbeite so gut wie nie mit Word.

On Thu, 3 Jun 2010 13:03:04 +0200, "Thomas Gahler"
Post by Thomas Gahler
Hallo Thomas
ich suche nach einer M?chkeit alle Kopfzeilen eines Dokumentes mit
n-Abschnitten so zu gestalten, das sie den Inhalt der ersten Kopfzeile
?hmen.
Dazu gibt es die .LinkToPrevious-Eigenschaft vom .Headers-Objekt
Gibt das Sections-Objekt die Anzahl der Abschnitte in einem Dokument
an?
Nein, das .Sections-Objekt ist eine Aufz?ung 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.
schon klar, ich hatte meinen Code nicht eingefügt:

.. Sections.count wollte ich schreiben
Post by Thomas Gahler
Frage 2: Muss .Headers immer von 1 bis 3 durchlaufen werden?
Steht 1 bis 3 f?endwelche Konstanten?
Es gibt drei arten von Kopfzeilen (Standard, ErsteSeite und Ungerade).
Kannst du via Datei/Seite einrichten/Layout beeinflussen. Daher macht es
sinn, grunds?lich 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? 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
Danke.

Gruß Thomas

Loading...