Dieses Makro wandelt die in Lawlift gesetzten Marker in echte, ausfüllbare Kontrollkästchen- und Textfelder um, versieht den übrigen Text mit Schreibschutz und speichert das Ergebnis als saubere .docx-Datei.

Checkboxen und Textfelder müssen in Lawlift an den Stellen, an denen sie in den Text eingefügt werden sollen, mit einem Zeichen gekennzeichnet sein.

Mit {□} gekennzeichnete Felder werden automatisch in ‘echte’ Checkbox-Felder umgewandelt. Mit {…} gekennzeichnete Felder sollen automatisch in “echte” Textfelder umgewandelt werden. Die Datei wird mit Ausnahme der Kontrollkästchenfelder schreibgeschützt und mit Ausnahme der Textfelder bleiben die Felder ausfüllbar oder anklickbar. Am Ende wird die Datei von einer .docm- in eine .docx-Datei (ohne Makro) konvertiert.

Beispiel:

{□} Option 1
{□} Option 2
Name:{…}
Ein Kleid: {…}

Achtung: Wenn das Makro ausgeführt wird, wandelt es die .docm-Datei automatisch in eine .docx-Datei um und speichert sie im selben Ordner, in dem die .docm-Datei gespeichert wurde.

Wichtig: Das Passwort für den Dokumentenschutz ist derzeit “1234” und kann am Anfang des Codes geändert werden.

Hinweis: Wenn Sie möchten, dass das Makro beim ersten Öffnen automatisch ausgeführt wird, ersetzen Sie den Namen “CreateContentControls” durch “AutoOpen”.

2. Codebeispiel

Tipp: Wenn Sie möchten, dass das Makro beim ersten Öffnen der generierten Word-Datei automatisch ausgeführt wird, ersetzen Sie bitte den Namen “CreateContentControls” in der ersten Zeile durch “AutoOpen”.

Sub CreateContentControls() 

Dim CheckboxStrg As String 
Dim TextboxStrg As String 
Dim myRange As Range 
Dim Testrange As Range 
Dim StartPos As Long 
Dim EndPos As Long 
Dim Password As String 
Dim Deletepath As String 
Password = "1234" 
CheckboxStrg = "{" & ChrW(&H25A1) & "}" 
TextboxStrg = "{...}" 
Offset = 0 
StartPos = InStr(1, ActiveDocument.Range.Text, CheckboxStrg, vbTextCompare) - 1 

Do Until StartPos = -1 

Set myRange = ActiveDocument.Range 
Set Testrange = ActiveDocument.Range 
Testrange.SetRange Start:=1, End:=StartPos 
Offset = Testrange.ContentControls.Count * 2 
EndPos = StartPos + Len(CheckboxStrg) 
myRange.SetRange Start:=StartPos + Offset, End:=EndPos + Offset 
myRange.Select 
myRange.Text = "" 
myRange.ContentControls.Add (wdContentControlCheckBox) 
StartPos = InStr(StartPos, ActiveDocument.Range.Text, CheckboxStrg, vbTextCompare) - 1 
Loop 

StartPos = InStr(1, ActiveDocument.Range.Text, TextboxStrg, vbTextCompare) - 1 

Do Until StartPos = -1 
Set myRange = ActiveDocument.Range 
Set Testrange = ActiveDocument.Range 
Testrange.SetRange Start:=1, End:=StartPos 
Offset = Testrange.ContentControls.Count * 2 
EndPos = StartPos + Len(TextboxStrg) 
myRange.SetRange Start:=StartPos + Offset, End:=EndPos + Offset 
myRange.Select 
myRange.Text = "" 
myRange.ContentControls.Add (wdContentControlText) 
StartPos = InStr(StartPos, ActiveDocument.Range.Text, TextboxStrg, vbTextCompare) - 1 
Loop 

Application.ActiveDocument.Protect wdAllowOnlyFormFields, Password:=Password 
Deletepath = ActiveDocument.FullName 
ActiveDocument.SaveAs2 FileName:=Left(ActiveDocument.FullName, Len(ActiveDocument.FullName) - 5) & ".docx", FileFormat:=wdFormatDocumentDefault 

Documents.Open (Left(ActiveDocument.FullName, Len(ActiveDocument.FullName) - 5) & ".docx") Kill (Deletepath) 

End Sub

Eine Beispieldatei können Sie hier herunterladen. Achtung, wenn Sie das Makro ausführen, wird die .docm im selben Ordner automatisch in eine .docx-Datei konvertiert.

Hinweis: Es gibt Einschränkungen in der Funktionsweise des Makros, wenn das Dokument Funktionsfelder (zB Inhaltsverzeichnisse) oder anklickbare URLs (“::url”) enthält. Außerdem können Schwierigkeiten auftreten, wenn die oben genannten Ausdrücke ”{□}” oder ”{…}” in Tabellen verwendet werden. Eine Alternative dazu wird in dem Makro für Funktionsfelder, Tabellen & URLs gezeigt.

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