Ungültige VBA Verweis entfernen

Wie man ungültige Verweise aus Worddokumenten manuell über den VBA Editor entfernt, hatte ich hier bereits beschrieben. Das folgendem Script löscht ebenfalls ungültige Verweise. Das Script kann zum Beispiel als Button in die Multifunktionsleiste eingebunden werden.

Durch ungültige Verweise kann es zum Beispiel vorkommen, das Worddokumente nicht mehr gespeichert werden können.

VBProject Object

Über das VBProject Object bekommt man Zugriff auf die Eigenschaft References. Dort kann über die Methode Remove ein ungültiger Verweis gelöscht werden.
Voraussetzung ist der Zugriff auf das VBA-Projektobjektmodell.

Zugriff auf das VBA-Projektobjektmodell

Wie man Zugriff auf das VBA-Projektobjektmodell bekommt beschreibe ich am Beispiel von Office 2007.

  1. Office Button anklicken
    OfficeButton
  2. Word-Optionen auswählen
    Word-Optionen
  3. das Vertrausensstellungscenter auswählen
    Vertrauensstellungscenter
  4. Einstellungen für das Vertrausensstellungscenter anklicken
    Einstellungen für dasVertrauensstellungscenter
  5. In der linken Spalte Einstellungen für Makros auswählen
    Einstellungen für Makros
  6. Zugriff durch setzen des Haken aktivieren
    Entwicklermakroeinstellungen

Das Makro – Verweis entfernen / References remove

Mit dem folgenden Makro kann nun geprüft werden, ob es ungültige Verweise in einem Worddokument gibt.

'---------------------------------------------------------------------------------------
' Procedure : modTools.FixInvalidReferences
' Author    : AF-Network.de
' Date      : 27.03.2014
' Purpose   : Löscht ungültige Verweise aus einem Worddokument
'---------------------------------------------------------------------------------------
Public Sub FixInvalidReferences()
    Dim oTemp As Object
    Dim i As Integer

    'Fehlerspeicher löschen
    Err.Clear
    i = 0

On Error GoTo Error

    For Each oTemp In ActiveDocument.VBProject.References
        If oTemp.isbroken = True Then
             ActiveDocument.VBProject.References.Remove oTemp
             i = i + 1
        End If
    Next

    GoTo Ende

Error:
    If Err.Number = 6068 Then
        MsgBox "Bitte aktivieren Sie folgende Word Einstellung:" & vbCrLf & _
        "1. Klicken Sie auf den 'Office Button'." & vbCrLf & _
        "2. Wählen Sie die 'Word-Optionen', unten rechts aus." & vbCrLf & _
        "3. Links das 'Vertrausensstellungscenter' anklicken." & vbCrLf & _
        "4. Rechts den Button 'Einstellungen für das Vertrausensstellungscenter' anklicken." & vbCrLf & _
        "5. Links 'Einstellungen für Makros' auswählen." & vbCrLf & _
        "6. Aktivieren von 'Zugriff auf das VBA-Projektobjektmodell vertrauen'" & vbCrLf & vbCrLf, vbOKOnly, Err.Description
    Else
        MsgBox Err.Description, vbCritical, Err.Number
    End If

Ende:
    If i > 0 Then
        MsgBox i & " Einträge wurden entfernt.", vbOKOnly, "Ergebnis"
    End If
End Sub

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.