VSTO – Word: Fehlerhafte Verweisquellen suchen

Beschreibung

Beim Aktualisieren von Dokumenten werden häufig fehlerhafte Verweisquellen übersehen. Um dies zu verhindern, habe ich die folgende Funktion geschrieben. Die Funktion dient als Input für die Funktion Dokument aktualisieren. Vorher definierte Fehlertexte werden gesucht und bei auffinden eines dieser Texte wird True zurückgegeben, andernfalls False.

Das Makro ist in VB.NET geschrieben, kann aber leicht in VBA portiert werden. Bei Fragen einfach die Kommentarfunktion benutzen.

Sourcecode

' Verweisquellen-Fehlermeldungen
Public Const REF_ERROR1 As String = "Fehler! Verweisquelle konnte nicht gefunden werden."
Public Const REF_ERROR2 As String = "Fehler! Textmarke nicht definiert."
Public Const REF_ERROR3 As String = "Fehler! Kein gültiger Dateiname."
Public Const REF_ERROR4 As String = "Fehler! Unbekannter Name für Dokument-Eigenschaft."

' Kapitel 0-Verweisquellen
Public Const CHAPTER0_1 As String = "section 0"
Public Const CHAPTER0_2 As String = "chapter 0"
Public Const CHAPTER0_3 As String = "sektion 0"
Public Const CHAPTER0_4 As String = "kapitel 0"

' Word-Objekt
Public objWord As Microsoft.Office.Interop.Word.Application = Globals.Ribbon_Class.Application

' Nach fehlerhaften Verweisquellen im Text suchen
Public Function findFehlerhafteVerweisquellen()
    Dim sSearchString As String
    Dim ireftype As Integer

    findFehlerhafteVerweisquellen = False

    With objWord.Selection
        For ireftype = 1 To 8
            Select Case ireftype
                Case 1: sSearchString = REF_ERROR1
                Case 2: sSearchString = REF_ERROR2
                Case 3: sSearchString = REF_ERROR3
                Case 4: sSearchString = REF_ERROR4
                Case 5: sSearchString = CHAPTER0_1
                Case 6: sSearchString = CHAPTER0_2
                Case 7: sSearchString = CHAPTER0_3
                Case 8: sSearchString = CHAPTER0_4
                Case Else: sSearchString = ""
            End Select
            With .Find
                .Text = sSearchString
                .Execute()
                If .Found Then
                    findFehlerhafteVerweisquellen = True
                    Exit For
                Else
                    findFehlerhafteVerweisquellen = False
                End If
            End With
        Next ireftype
    End With
End Function