Felder aktualisieren (III) |
|
In Felder aktualisieren und Felder aktualisieren (II) habe ich Makros vorgestellt, mit denen sich alle Felder in den verschiedenen Bereichen eines Dokumentes aktualisieren lassen. Das folgende erweiterte Beispiel aktualisiert nun neben dem gesamten Dokument (inkl. Kopf- und Fußzeilen) auch die vorhandenen Inhaltsverzeichnisse TablesOfContents. Über eine Konstante bTOCNeu kann dabei am Anfang festgelegt werden, ob das Inhaltsverzeichnis neu erstellt werden soll, oder ob nur die Seitenzahlen aktualisiert werden sollen. ' Legt fest ob das Inhaltsverzeichnis (TOC) neu erstellt (True) ' oder ob nur die Seitenzahlen aktualisiert werden sollen (False) Const bTOCNeu As Boolean = False Sub AlleFelderAktualisierenMitTOC() If Documents.Count = 0 Then Exit Sub Dim rngDoc As Range Dim aField As Field Dim oDoc As Document Dim oTOC As TableOfContents Dim docSec As Section Dim bProtect As Boolean Dim intProtectType As Integer bProtect = False Set oDoc = ActiveDocument ' Dokumentschutz prüfen und merken If oDoc.ProtectionType = wdNoProtection Then bProtect = False Else bProtect = True intProtectType = oDoc.ProtectionType ActiveDocument.Unprotect End If ' Alle Abschnitte mit allen Bereichen durchlaufen For Each docSec In oDoc.Sections For Each rngDoc In oDoc.StoryRanges rngDoc.Fields.Update While Not (rngDoc.NextStoryRange Is Nothing) Set rngDoc = rngDoc.NextStoryRange rngDoc.Fields.Update Wend Next rngDoc Next docSec If bTOCNeu = False Then ' Inhaltsverzeichnisse: nur Seiten aktualisieren If oDoc.TablesOfContents.Count > 0 Then For Each oTOC In oDoc.TablesOfContents oTOC.UpdatePageNumbers Next oTOC End If Else ' Inhaltsverzeichnisse: neu erstellen If oDoc.TablesOfContents.Count > 0 Then For Each oTOC In oDoc.TablesOfContents oTOC.Update Next oTOC End If End If ' Dokumentschutz ggf. wieder setzen If bProtect = False Then Exit Sub Else ActiveDocument.Protect intProtectType, True End If End Sub |
Besucher: 0 online | 0 heute | 0 diesen Monat | 2201886 insgesamt | Seitenaufrufe: 106 | Letzte Änderung: 29.04.2016 | © 2001-18 Christian Freßdorf | ||||
Wer eine Lüge sagt, merkt nicht, welch große Aufgabe er übernimmt; denn er wird gezwungen sein, zwanzig weitere zu finden, um diese eine aufrechtzuerhalten. Franz VII, Herzog von La Rochefoucauld |
powered by phpCMS and PAX |