Verweise in allen Dokumenten eines Ordners löschen
Ein oft gehörter und leider auch vorkommender Fehler. Es werden Dokumente aufgrund von Vorlagen erstellt. Diese Vorlagen sidn für alle zugänglich auf einem Netzlaufwerk gespeichert. Nun werden die Server umbenannt oder neue Server angelegt und die Vorlagen verschoben. Fürt die neuen Dokumente spielt es keine Rolle. In den bisher gespeicherten Dokumenten wurden aber die Pfade zu den alten Vorlagen als Verweise mitgespeichert.
Nun dauert es sehr lange, bis die alten Dokumente geöffnet werden. Das liegt daran, dass Word versucht, die Vorlagen zu finden. Dies ist aber nicht möglich, da es die Vorlagen an diesem Ort nicht mehr gibt.
Da hilft nur eins: die Verweise müssen gelöscht werden. Das ist aber nur möglich, wenn man die Dokumente alle einzeln öffnet, die Verweise löscht, das Dokument speichert und wieder schließt.
Hierzu gibt es ein Makro, das diese Vorgänge automatisch macht:
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
Sub Verweise_entfernen()
Dim anzdatei As Integer
Dim Pfad
Set fs = Application.FileSearch
'hier kann auch ein fester Pfad eingegeben werden
Pfad = InputBox("Geben Sie den Pfad an", "Pfad")
'hier werden nur die insgesamt gefundenen Dateien ausgegeben
If Pfad = "" Then
MsgBox "Kein Pfad eingegeben!"
Exit Sub
End If
If Dir(Pfad, vbDirectory) = "" Then
MsgBox "Pfad kann nicht gefunden werden!"
Exit Sub
End If
With fs
.NewSearch
.FileType = msoFileTypeWordDocuments 'Word-Dokumente!
.LookIn = Pfad
.SearchSubFolders = True
'folgender Code wird nicht unbedingt gebraucht
If .Execute = 0 Then
MsgBox "Es wurden keine Dateien."
Exit Sub
End If
anzdatei = .FoundFiles.Count
End With
' Verweise in den einzelnen Dateien löschen
On Error Resume Next
For j = 1 To anzdatei
WordBasic.DisableAutoMacros 1
If Err.Number <> 0 Then
Documents.Open fs.FoundFiles(j)
'Verweis wird gelöscht
With ActiveDocument
.UpdateStylesOnOpen = False
.AttachedTemplate = ""
End With
'Dokument wird gespeichert und geschlossen
ActiveDocument.Save
ActiveDocument.Close
End If
Next j
WordBasic.DisableAutoMacros 0
MsgBox "Es wurden " & anzdatei & " Datei(en) neu gespeichert!"
End Sub
In Zeile16 bis 19 wird erstmal überprüft, ob es den angegebenen Pfad überhaupt gibt. In den Zeilen 21 bis 35 werden alle Dokuemnte aus dem Verzeichnis, und zwar wirklich nur die Dokumente, ausgelesen.
In Zeile 39 werden due Automatischen Makros ausgeschaltewt, damit beim Öffnen der Dokumente keine Makros ausgeführt werden.
Anschließend werden alle eingelesen Dokuemnte der Reihe nach geöffnet, die Verweise gelöscht, gespeichert und weider geschlossen.
Aber Vorsicht: die Ausführung des Codes kann bei sehr vielen Dokumenten erhebliche Zeit in Anspruch nehmen. Und immer vorher allen Dokumente sichern. Am besten immer vorher erstmal testen.
Für weitere Infos bitte auf den Text klicken
Cookies speichern Informationen lokal auf Ihrem Rechner, ohne die Verwendung kann der Funktionsumfang beeinträchtigt werden. Weitere Informationen
Annehmen