Benutzung auf eigene Gefahr ! |
Beschreibung |
Word neigt dazu, ständig neue Textmarken anzulegen, auch wenn diese nicht benutzt werden. Insbesondere, wenn ein neues Inhaltsverzeichnis erstellt wird, bleiben die Textmarken des alten Inhaltsverzeichnisses erhalten. Das Makro überprüft alle Textmarken, ob sie referenziert werden. Unbenutzte Textmarken werden gelöscht. |
VBA-Quelltext |
Public Sub TextmarkenReduzieren() Dim BenutzteTM As String, Ausgabe As String Dim TextMarke As Bookmark, Feld As Field, Nr As Long Nr = 0 BenutzteTM = "" ActiveDocument.Bookmarks.ShowHidden = True For Each Feld In ActiveDocument.Fields If InStr(" 3 6 12 37 38 68 72 ", " " & Feld.Type & " ") Then BenutzteTM = BenutzteTM & Trim(Feld.Code) & " " Nr = Nr + 1 Application.StatusBar = Nr End If Next Feld Ausgabe = Nr & " Felder mit Textmarken" & vbNewLine & ActiveDocument.Bookmarks.Count & " Textmarken vorher" & vbNewLine Nr = 0 For Nr = ActiveDocument.Bookmarks.Count To 1 Step -1 If InStr(1, BenutzteTM, ActiveDocument.Bookmarks(Nr).Name, vbTextCompare) = 0 Then ActiveDocument.Bookmarks(Nr).Delete Application.StatusBar = Nr End If Next Nr MsgBox Ausgabe & ActiveDocument.Bookmarks.Count & " Textmarken nachher" End Sub |
Rückgabewert |
Eine Meldungsbox zeigt am Ende die Ergebnisse, die das Makro erzielt hat, mit drei Zahlen an: Felder mit Textmarken sind die Felder im Dokument, die tatsächlich auf eine Textmarke verwiesen haben. Textmarken vorher sind die Textmarken, die im Dokument vor dem Einsatz des Makros registriert waren und Textmarken nachher zeigt, wieviele Textmarken davon übriggeblieben sind. |
Anwendungsgebiete, Fehler und Warnungen |
Das Programm prüft nicht, ob das Dokument geschützt oder die Datei schreibgeschützt ist. Um sicher zu sein, dass das Programm funktioniert, sollten folgende Schritte unternommen werden:
|