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