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.