Dieses angepasste Makro erstellt Checkboxen und Textfelder in Dokumenten, die zusätzlich Funktionsfelder, Tabellen oder anklickbare URLs enthalten.

Soll Ihr Dokument neben Fußnoten weitere Funktionsfelder enthalten, wie Inhaltsverzeichnisse oder anklickbare Links (“::url”), oder sollen die Ausdrücke ”{□}” oder ”{…}” in Tabellen platziert werden, ist es notwendig, ein entsprechend angepasstes Makro zu verwenden. Im Folgenden stellen wir Ihnen einen Beispielcode zur Verfügung:

 Sub CreateContentControls()
 Dim CheckboxStrg As String
 Dim TextboxStrg As String
 Dim myRange As Range
 Dim Testrange As Range
 Dim myPara As Paragraph
 Dim StartPos As Long
 Dim EndPos As Long
 Dim Password As String
 Dim Deletepath As String
 Password = "1234"
 CheckboxStrg = "{" & ChrW(&H25A1) & "}"
 TextboxStrg = "{...}"
 Offset = 0
 For Each myPara In ActiveDocument.Paragraphs
 StartPos = InStr(1, myPara.Range.Text, CheckboxStrg, vbTextCompare) - 1
 Do Until StartPos = -1
 Set myRange = myPara.Range
 Set Testrange = myPara.Range
 Testrange.SetRange Start:=myRange.Start, End:=myRange.Start + StartPos + 1
 Offset = Testrange.ContentControls.Count * 2
 EndPos = StartPos + Len(CheckboxStrg)
 myRange.SetRange Start:=myRange.Start + StartPos + Offset, End:=myRange.Start + EndPos + Offset
 myRange.Select
 myRange.Text = ""
 myRange.ContentControls.Add (wdContentControlCheckBox)
 StartPos = InStr(StartPos + 1, myPara.Range.Text, CheckboxStrg, vbTextCompare) - 1
 Loop
 Next
 For Each myPara In ActiveDocument.Paragraphs
 StartPos = InStr(1, myPara.Range.Text, TextboxStrg, vbTextCompare) - 1
 Do Until StartPos = -1
 Set myRange = myPara.Range
 Set Testrange = myPara.Range
 Testrange.SetRange Start:=myRange.Start, End:=myRange.Start + StartPos + 1
 Offset = Testrange.ContentControls.Count * 2
 EndPos = StartPos + Len(TextboxStrg)
 myRange.SetRange Start:=myRange.Start + StartPos + Offset, End:=myRange.Start + EndPos + Offset
 myRange.Select
 myRange.Text = ""
 myRange.ContentControls.Add (wdContentControlText)
 StartPos = InStr(StartPos + 1, myPara.Range.Text, TextboxStrg, vbTextCompare) - 1
 Loop
 Next
 Application.ActiveDocument.Protect wdAllowOnlyFormFields, Password:=Password
 Deletepath = ActiveDocument.FullName
 ActiveDocument.SaveAs2 FileName:=Left(ActiveDocument.Name, Len(ActiveDocument.Name) - 5) & ".docx", FileFormat:=wdFormatDocumentDefault
 Documents.Open (Left(ActiveDocument.Name, Len(ActiveDocument.Name) - 5) & ".docx")
 Kill (Deletepath)
End Sub

ACHTUNG: Da das Makro jeden Absatz einzeln nach den Ausdrücken durchsucht, ist es wichtig, dass sich in einem Absatz nur Ausdrücke ODER Funktionsfelder oder Hyperlinks (“::url”) befinden. Ist dies nicht der Fall, können Anzeigeprobleme auftreten. Außerdem ist darauf zu achten, dass die Markierung der Kontrollkästchen und Textfelder mit den Ausdrücken ”{□}” oder ”{…}” immer innerhalb eines Absatzes und nicht über mehrere Absätze hinweg erfolgt.

Makro ausführen: siehe So fügen Sie ein Word-Makro ein und führen es aus.