Word-Inhaltssteuerelemente zurücksetzen: Testdaten einfach entfernen

Wer Word-Vorlagen mit Inhaltssteuerelementen erstellt, kennt das Problem: Zum Testen werden die Felder mit Beispieldaten gefüllt – und irgendwann möchte man die Vorlage wieder in ihren ursprünglichen Zustand zurückversetzen.

Doch die eingetragenen Testdaten bleiben bestehen. Möchte man die Felder wieder leeren, ohne die Inhaltssteuerelemente selbst zu entfernen, ist das mit den Bordmitteln von Word nicht immer so komfortabel.

Gerade bei umfangreicheren Vorlagen kann es ziemlich mühsam werden, jedes Feld einzeln zurückzusetzen.

Genau für diesen Fall ist folgendes Makro vorgesehen, das die vorhandenen Inhaltssteuerelemente wieder in ihren Ausgangszustand versetzt.

Option Explicit
 
Sub RebuildContentControls_ClearText_Safe()

    Dim indexCC As Long

    ' Altes ContentControl
    Dim oldCC As ContentControl
    Dim oldCC_Type As WdContentControlType
    Dim oldCC_Range As Range

    ' Eigenschaften des alten CC (Zwischenspeicher)
    Dim oldCC_Title As String
    Dim oldCC_Tag As String
    Dim oldCC_LockCC As Boolean
    Dim oldCC_LockContents As Boolean

    ' Neues ContentControl
    Dim newCC As ContentControl
 
    For indexCC = ActiveDocument.ContentControls.Count To 1 Step -1
 
        Set oldCC = ActiveDocument.ContentControls(indexCC)
 
        ' Eigenschaften des alten ContentControls sichern
        oldCC_Type = oldCC.Type
        oldCC_Title = oldCC.Title
        oldCC_Tag = oldCC.Tag
        oldCC_LockCC = oldCC.LockContentControl
        oldCC_LockContents = oldCC.LockContents
 
        Set oldCC_Range = oldCC.Range
 
 
        ' Altes ContentControl entfernen
        oldCC.Delete
       
        ' Inhalt gezielt entfernen
        oldCC_Range.Text = ""
 
        ' Neues ContentControl im gleichen Range erzeugen
        Set newCC = ActiveDocument.ContentControls.Add(oldCC_Type, oldCC_Range)
 
        ' Eigenschaften auf neues Control übertragen
        With newCC
            .Title = oldCC_Title
            .Tag = oldCC_Tag
            .LockContentControl = oldCC_LockCC
            .LockContents = oldCC_LockContents
        End With
 
    Next indexCC
 
End Sub

Schreiben Sie einen Kommentar

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