Info
Dieses Feature ist nur im unlimited Plan verfügbar.
Beispiel 1: Code zur automatischen Erstellung von Fußnoten
1. So funktioniert das Makro:
In Lawlift können Fußnoten derzeit nur eingeschränkt implementiert werden. Mit diesem Makro können Sie Fußnoten, die im Fließtext an den entsprechenden Textstellen vorhanden sind, automatisch in Fußnoten im Fußnotentext umwandeln. Die Fußnotennummern werden automatisch vergeben und auf die entsprechenden Textstellen referenziert. Sie werden innerhalb von Word mit einem Klick auf die entsprechende Fußnote verlinkt, sodass der Benutzer hin und her springen kann.
Der Anfang einer Fußnote wird durch das Zeichen "{FN:" gekennzeichnet, das Ende der Fußnote durch das Zeichen "}". Beides muss im Fließtext ohne Anführungszeichen verwendet werden.
Beispiel:
Lorum voluptua. {FN: ICC-01/09-02/11; Hervorhebung} Bei vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, kein Meer takimata sanctus est Lorem ipsum dolor sit amet. {FN: ICC-01/09-02/11; Betonung}
Tipp
Zwischen der Fußnote und dem referenzierten Wort oder Satz darf kein Leerzeichen stehen, da sonst dieses Leerzeichen bei der späteren Fußnotennummer und dem referenzierten Satz oder Wort verbleibt.
2. Verwendete Formatvorlagen
Es werden die Standard-Word-Stile verwendet. Für abweichende Änderungen in der Darstellung der Fußnote selbst ist dies die Formatvorlage „Fußnotentext“. Für eine individuelle Anpassung der Fußnotennummer muss die Formatvorlage „Fußnotentext“ im Briefkopf angepasst werden.
3. Codebeispiel
Es gibt viele verschiedene Möglichkeiten, ein solches Makro zu programmieren. Wenden Sie sich gerne an unseren Support. Hier ist ein Beispiel für ein Makro:
Sub AutoOpen()
Dim OpenStrg As String
Dim CloseStrg As String
Dim myRange As Range
Dim StartPos As Long
Dim EndPos As Long
OpenStrg = "{FN:"
CloseStrg = "}"
StartPos = InStr(1, ActiveDocument.Range.Text, OpenStrg, vbTextCompare) - 1
Do Until StartPos = -1
Set myRange = ActiveDocument.Range
EndPos = InStr(StartPos, ActiveDocument.Range.Text, CloseStrg, vbTextCompare)
myRange.SetRange Start:=StartPos, End:=EndPos
ActiveDocument.Footnotes.Add Range:=myRange, Text:=Mid(myRange.Text, Len(OpenStrg) + 1, Len(myRange.Text) - Len(CloseStrg) - Len(OpenStrg))
myRange.Text = ""
StartPos = InStr(StartPos, ActiveDocument.Range.Text, OpenStrg,vbTextCompare) - 1
Loop
End Sub
Hinweis: Es gibt Einschränkungen in der Funktionsweise des Makros, wenn das Dokument Funktionsfelder (zB Inhaltsverzeichnisse) oder anklickbare URLs ("::url") enthält. Eine Alternative dazu wird unten gezeigt.
4. Codebeispiel für Dokumente mit Funktionsfeldern und/oder anklickbaren URLs
Wenn Ihr Dokument neben Fußnoten auch Funktionsfelder wie ein Inhaltsverzeichnis oder anklickbare Links ("::url") enthalten soll, ist es notwendig, ein entsprechend angepasstes Makro zu verwenden. Im Folgenden stellen wir Ihnen einen Beispielcode zur Verfügung:
Sub AutoOpen()
Dim OpenStrg As String
Dim CloseStrg As String
Dim myRange As Range
Dim myPara As Paragraph
Dim StartPos As Long
Dim EndPos As Long
OpenStrg = "{FN:"
CloseStrg = "}"
For Each myPara In ActiveDocument.Paragraphs
StartPos = InStr(1, myPara.Range.Text, OpenStrg, vbTextCompare) - 1
Do Until StartPos = -1
Set myRange = myPara.Range
EndPos = InStr(StartPos, myPara.Range, CloseStrg, vbTextCompare)
myRange.SetRange Start:=myRange.Start + StartPos, End:=myRange.Start + EndPos
ActiveDocument.Footnotes.Add Range:=myRange, Text:=Mid(myRange.Text, Len(OpenStrg) + 1, Len(myRange.Text) - Len(CloseStrg) - Len(OpenStrg))
myRange.Text = ""
StartPos = InStr(StartPos, myPara.Range, OpenStrg, vbTextCompare) - 1
Loop
Next
End Sub
Hinweis: Da das Makro jeden Absatz einzeln durchsucht und Fußnoten findet und erstellt, ist es wichtig, dass in einem Absatz immer nur Fußnoten ODER Funktionsfelder oder Hyperlinks ("::url") vorhanden sind. Ist dies nicht der Fall, können Anzeigeprobleme auftreten. Außerdem ist darauf zu achten, dass die Markierung einer Fußnote "{FN:...} immer innerhalb eines Absatzes und nicht über mehrere Absätze hinweg erfolgt.
5. Code zum Vorbereiten von Fußnoten für den Import
Wenn Sie einen Text importieren möchten, der bereits Fußnoten enthält, und diese beim Export wieder als solche anzeigen möchten, können Sie hierfür auch ein Makro verwenden. Das folgende Makro konvertiert Ihre Fußnoten in das oben beschriebene Format ("{FN:...}"). So können Sie umfangreiche Texte mit Fußnoten passend aufbereiten.
Sub Re_FN_UPdated_3()
Dim FtNt As Footnote
Dim FNTxt
For Each FtNt In ActiveDocument.Footnotes
With FtNt.Reference
.Font.Superscript = False
FNTxt = FtNt.Range.Text
If Asc(Left(FNTxt, 1)) = "2" Or Asc(Left(FNTxt, 1)) = "9" Then
FNTxt = Right(FNTxt, Len(FNTxt) - 1)
If Asc(Left(FNTxt, 1)) = "9" Then
FNTxt = Right(FNTxt, Len(FNTxt) - 1)
.Text = "{FN:" & FNTxt & "}"
Else
.Text = "{FN:" & FNTxt & "}"
End If
Else
.Text = "{FN:" & FtNt.Range.Text & "}"
End If
End With
Next
End Sub
Um die Ausdrücke beim Export wieder in Fußnoten umzuwandeln, können Sie wieder das erste Makro verwenden!
Beispiel 2: Code zur automatischen Erstellung von Checkboxen, Textfeldern und Schreibschutz.
1. So funktioniert das Makro:
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
Es gibt viele verschiedene Möglichkeiten, ein solches Makro zu programmieren. Wenden Sie sich gerne an unseren Support. Hier ist ein Beispiel für ein Makro.
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 unten gezeigt.
Beispiel 3: Code für Dokumente mit Funktionsfeldern, Tabellen oder anklickbaren URLs.
Soll Ihr Dokument neben Fußnoten weitere Funktionsfelder enthalten, wie Inhaltsverzeichnisse oder anklickbare Links ("::url"), oder sollen die Ausdrücke "{□}" oder "{...}" in Tabellen platziert, 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.
Beispiel 4: Code zur automatischen Formatierung von Fußnoten
1. So funktioniert das Makro:
Ziel ist es, die unten gezeigte Formatierung automatisch umzusetzen:
Das Problem ist, dass Word die automatische unterschiedliche Steuerung von Fußnotentexten und Fußnotenzeichen über die Formatvorlagen nicht zulässt. Nur die zweite Zeile kann über den hängenden Einzug der Fußnotentext-Formatvorlage gesteuert werden. So muss für jede Fußnote mit der Tabulatortaste hinter der Fußnotennummer bzw. dem Fußnotenzeichen ein Tabulator gesetzt und die erste Zeile immer manuell eingerückt werden. Dies kann mit dem folgenden Code-Snippet automatisiert werden. Der Einzug wird dann in der ersten und zweiten Zeile auf 1,5 gesetzt.
Hinweis: Da das Makro die manuellen Schritte für jede Fußnote automatisiert, kann es bei vielen Fußnoten einige Zeit dauern. Unserer Erfahrung nach dauert es etwa 40 Sekunden für etwa 70 Fußnoten. Leider kann dies innerhalb von Word nicht beschleunigt werden. Wenn Sie möchten, dass das Makro beim ersten Öffnen automatisch ausgeführt wird, ersetzen Sie bitte den Namen "FormateFootnotes" durch "AutoOpen".
Achtung: Wenn das Makro ausgeführt wird, wandelt es die .docm-Datei in eine .docx-Datei um und speichert sie an dem von Ihnen angegebenen Ort.
2. Codebeispiel
Es gibt viele verschiedene Möglichkeiten, ein solches Makro zu programmieren. Wenden Sie sich gerne an unseren Support. Hier ist ein Beispiel für ein Makro:
Sub FormateFootnotes()
For i = 1 To ActiveDocument.Footnotes.Count
ActiveDocument.Footnotes(i).Range.Select
With Selection
.Collapse Direction:=wdCollapseStart
.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
.TypeText Text:=vbTab
.ParagraphFormat.FirstLineIndent = CentimetersToPoints(-1.5)
End With
Next
Application.FileDialog(msoFileDialogSaveAs).Show
End Sub
Beispiel 5: Code zum Einfügen von Tabstopps innerhalb eines Absatzes
1. So funktioniert das Makro:
Die Textausrichtung in Lawlift erfolgt in der Regel über die Formatierung der einzelnen Absätze. Um Textbereiche innerhalb eines Absatzes einzurücken, steht folgendes Makro zur Verfügung.
Wie Sie den Code einfügen und die Tabstopps setzen, wird hier ausführlich erklärt.
2. Codebeispiel:
Es gibt viele verschiedene Möglichkeiten, ein solches Makro zu programmieren. Wenden Sie sich gerne an unseren Support. Hier ist ein Beispiel für ein Makro:
Sub AutoOpen()
'
' Tabstopp Makro
'
'
Set myRange = ActiveDocument.Content
myRange.Find.Execute FindText:="{Tab}"
With Selection.Find
.ClearFormatting
.Text = "{Tab}"
.Replacement.ClearFormatting
.Replacement.Text = "^t"
.Execute Replace:=wdReplaceAll, Forward:=True, _
Wrap:=wdFindContinue
End With
End Sub
Beispiel 6: Code zum Markieren von nicht ausgefüllten Platzhaltern
1. So funktioniert das Makro:
Dieses Makro bietet Ihnen die Funktion, nicht ausgefüllte Platzhalter in Ihrem Word-Dokument farblich hervorzuheben. Nach dem Einfügen des Codes werden die nicht ausgefüllten Platzhalter beim Öffnen des Word-Dokuments automatisch gelb hinterlegt.
2. Codebeispiel:
Es gibt viele verschiedene Möglichkeiten, ein solches Makro zu programmieren. Wenden Sie sich gerne an unseren Support. Hier ist ein Beispiel für ein Makro:
Sub AutoOpen()
'
' Makro1 Makro
'
'
Set myRange = ActiveDocument.Content
myRange.Find.Execute FindText:="[...]"
Options.DefaultHighlightColorIndex = wdYellow
myRange.Find.ClearFormatting
myRange.Find.Replacement.ClearFormatting
With myRange.Find
.Replacement.Highlight = True
.Forward = True
.Wrap = wdFindAsk
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
myRange.Find.Execute Replace:=wdReplaceAll
End Sub
Beispiel 7: Vorbereiten von formatierten Links für den Lawlift-Import
1. So funktioniert das Makro:
Lawlift bietet Ihnen die Möglichkeit, eine als Hyperlink eingefügte URL mit einem Titel über die Funktion "Titel(...)" zu formatieren. Wie das genau funktioniert, haben wir Ihnen hier gezeigt.
Wenn Sie jedoch vorab ein zu automatisierendes Word-Dokument haben, das bereits solche formatierten Links enthält, können Sie den Text nicht einfach in LAWLIFT kopieren. Es würden nur die Titel kopiert, nicht aber die URLs.
Hier kann ein Makro helfen, das alle formatierten Links im Word-Dokument in die von LAWLIFT lesbare Form "::url[www.beispielurl.detitle(example)]" umwandelt. Anschließend können die formatierten Links einfach aus der Word-Datei in die LAWLIFT-Vorlage kopiert werden. Lawlift erkennt die Ausdrücke und fügt sie als anklickbare URLs mit dem angegebenen Titel ein, wie in unserer Hilfe gezeigt.
Unformatierte Links können auch ohne Verwendung dieses Makros einfach in die LAWLIFT-Vorlage kopiert werden und werden von LAWLIFT als solche erkannt.
2. Codebeispiel:
Es gibt viele verschiedene Möglichkeiten, ein Makro zu programmieren. Wenden Sie sich gerne an unseren Support.
Hier ist ein Beispiel für ein Makro, das die Quelldatei für den Import in Lawlift vorbereitet:
Sub Format_Hyperlinks()
Dim Link As Hyperlink
Dim HTP1, HTP2 As Integer
HTP1 = 0
HTP2 = 0
'checking document if it contain URLs
If ActiveDocument.Hyperlinks.Count > 0 Then
For Each Link In ActiveDocument.Hyperlinks '------------------------
If Link.Address <> "" Then
'links vs bookmarks
If InStr(Link.Address, "http") > 0 Then '------------
Link.Range.Select
'checking for address only links
If Link.TextToDisplay = Link.Address Then
Selection.TypeText "::url[" & Link.Address & "]"
HTP1 = HTP1 + 1
Else 'if link have a text to display
Selection.TypeText "::url[" & Link.Address & " Title(" & Link.TextToDisplay & ")]"
HTP2 = HTP2 + 1
End If
End If '------------
End If
Next Link '------------------------
'statistic message
mSg = "There are " & HTP1 & " link(s) without Title." & Chr(13) & "There are " & HTP2 & " link(s) with Title." & Chr(13) & "Total " & HTP1 + HTP2 & " link(s) formatted so far."
MsgBox mSg, vbOKOnly + vbInformation, "Statistics"
Else
'if not links were found in document
MsgBox "There are no hyperlinks in this document."
End If
End Sub
Sub Format_Hyperlinks_Updated()
'------------------------------------------------'
'--------- Dealing Hyperlinks in Body -----------'
'------------------------------------------------'
Dim Link As Hyperlink
Dim HTP1, HTP2 As Integer
HTP1 = 0
HTP2 = 0
BD = 0
FT = 0
'checking document if it contain URLs
On Error Resume Next ' Handling unknown error for this time only
If ActiveDocument.Hyperlinks.Count > 0 Then
For Each Link In ActiveDocument.Hyperlinks '------------------------
'links vs bookmarks
If InStr(Link.Address, "http") > 0 Then '------------
Link.Range.Select
'checking for address only links
If Link.TextToDisplay = Link.Address Then
Selection.TypeText "::url[" & Link.Address & "]"
HTP1 = HTP1 + 1
Else 'if link have a text to display
Selection.TypeText "::url[" & Link.Address & " Title(" & Link.TextToDisplay & ")]"
HTP2 = HTP2 + 1
End If
End If
BD = BD + 1
Next Link '------------------------
Else
'if not links were found in document
MsgBox "There are no hyperlinks in the body of document."
End If
'------------------------------------------------'
'------- Dealing Hyperlinks in Footnotes --------'
'------------------------------------------------'
Dim h As Hyperlink
With ActiveDocument
If .Footnotes.Count >= 1 Then
With .StoryRanges(wdFootnotesStory)
For Each h In .Hyperlinks
If InStr(h.Address, "http") > 0 Then
h.Range.Select
'checking for address only links
If h.TextToDisplay = h.Address Then
Selection.TypeText "::url[" & h.Address & "]"
HTP1 = HTP1 + 1
Else 'if link have a text to display
Selection.TypeText "::url[" & h.Address & " Title(" & h.TextToDisplay & ")]"
HTP2 = HTP2 + 1
End If
End If
FT = FT + 1
Next h
End With
End If
End With
'------ Statistic Message -------'
mSg = "Number of Hyperlink(s) in:" & Chr(13) & "Main Document =" & BD & Chr(13) & "Footnote =" & FT & Chr(13) & Chr(13) & "There are " & HTP1 & " link(s) without Title." & Chr(13) & "There are " & HTP2 & " link(s) with Title." & Chr(13) & Chr(13) & "Total " & HTP1 + HTP2 & " link(s) formatted so far."
MsgBox mSg, vbOKOnly + vbInformation, "Statistics"
End Sub
Hinweis: Führen Sie das Makro nur einmal aus, sonst verschachteln sich die Funktionen ineinander.
Beispiel 8: Code zum Setzen einer Nummerierung innerhalb von Tabellen
1. So funktioniert das Makro:
Die Nummerierung von Zeilen in einer Tabelle funktioniert grundsätzlich wie die übliche Nummerierung in Lawlift, nämlich über Ebenen. Um diese Ebenen innerhalb der Tabelle zu identifizieren, wird der Ausdruck "[#]" verwendet. Dabei definiert „[#]“ die 1. Ebene, „[##]“ die 2. Ebene, „[###]“ die 3. Ebene und so weiter. Alle neun von Word bereitgestellten Ebenen können verwendet werden. Welche Nummerierung schließlich eingefügt wird, muss zuvor in einer Listenformatvorlage innerhalb des Briefkopfes festgelegt werden. Der Benennung der Listenformatvorlage kommt dabei eine besondere Bedeutung zu, da der Name im Makro verwendet wird. In unserem Fall wurde die Liste "A. / 1 . / 1.1." genannt. Sie können der Liste jedoch auch einen anderen Namen geben und den Makro-Code an der entsprechenden Stelle anpassen.
Bei Fragen hierzu wenden Sie sich bitte an unser Support-Team unter support@lawlift.de.
2. Codebeispiel:
Unten finden Sie einen Beispielcode, der die in der Listenformatvorlage festgelegte Nummerierung auf die Absätze innerhalb einer Tabelle anwendet. Diese Absätze müssen zuvor in der LAWLIFT-Vorlage mit [#], [##], etc. markiert werden. Sobald das Makro ausgeführt wird, wird an den entsprechenden Stellen die Nummerierung ergänzt. Beachten Sie, dass hier auch die Nummerierung außerhalb der Tabelle mit berücksichtigt wird.
Streng genommen besteht das Code-Beispiel aus zwei verschiedenen Sub-Routinen. Die erste legt fest, dass alle Nummerierungsebenen links ausgerichtet werden. Das gewährleistet eine übersichtliche Darstellung innerhalb der Tabelle, wo es oft nicht viel Platz für Einrückungen gibt. Die zweite Sub-Routine wandelt nun alle Absätze, welche mit den [#]-Befehlen gekennzeichnet sind, in nummerierte Absätze um und orientiert sich dabei an der Nummerierung, die zuvor in der Listenformatvorlage "A. / 1 . / 1.1." festgelegt wurde.
Hinweis: Sie müssen das Makro manuell ausführen, nachdem Sie die Datei aus Lawlift exportiert haben. Wenn Sie es automatisch ausführen möchten, benennen Sie das Makro in "AutoOpen" um. Dies bewirkt, dass das Makro beim Öffnen der Word-Datei automatisch ausgeführt wird.
Wenn das Dokument eine große Anzahl von Ausdrücken enthält, kann die Ausführung einige Sekunden dauern.
Sub Level_setting_A_1_11()
Dim X As Integer
Const newNumPos As Long = 0
Const newTextPos As Long = 0
With ActiveDocument.Styles("Liste3").ListTemplate
For X = 1 To 9
.ListLevels(X).TextPosition = newTextPos
.ListLevels(X).NumberPosition = newNumPos
Next
End With
End Sub
Sub Nummerierung_Numeric_with_Zero_indentation()
Dim Level As Integer
With ActiveDocument.Range.Find
.Text = "\[#*\]"
.MatchWildcards = True
Do While .Execute
If .Parent.Information(wdWithInTable) Then
Level = Len(.Parent.Text) - 2
.Parent.Style = ActiveDocument.Styles("Liste3")
.Parent.ListFormat.ListLevelNumber = Level
If Not Level = 1 Then
.Parent.ListFormat.ListTemplate.ListLevels(Level).TextPosition = 0
.Parent.ListFormat.ListTemplate.ListLevels(Level).NumberPosition = 0
End If
.Parent.Delete
End If
Loop
.MatchWildcards = False
End With
End Sub
Beispiel 9: Code zum Generieren einer variablen Nummerierung von Anhängen
1. So funktioniert das Makro:
Dieses Codebeispiel bietet Ihnen die Möglichkeit, Anlagen variabel zu nummerieren und interaktive Verweise im Text zu setzen. Verwenden Sie dazu den Ausdruck "{#VN}", der an die Stelle der jeweiligen Nummerierung gesetzt wird, gefolgt vom individuellen Namen des Anhangs. Für die Verweise im Text wird der Ausdruck "(...Attachment {#VN}: Name_of_the_attachment)" verwendet.
2. Codebeispiel:
Bei der Verwendung des Makros sind einige Besonderheiten zu beachten. Um eine einwandfreie Funktion zu gewährleisten, muss die Vorlage die Überschrift „Anhänge“ enthalten. Außerdem müssen die Anhänge in einer nummerierten Liste angezeigt werden. Im Folgenden finden Sie eine Illustration zur Funktionsweise des Makros:
Sub Numbering_N_Bookmarks_Updated_3()
'ADT = Mid(AD.Text, 24, Len(AD.Text))
'Selection.Find.Execute Trim(Left(Mid(AD.Text, 5, Len(AD.Text)), Len(Mid(AD.Text, 5, Len(AD.Text))) - 1)), Forward:=False
Dim BMT, ADT, L1 As String
Dim H As Integer
Dim AD, MyRange As Range: Set MyRange = ActiveDocument.Range
Selection.EndKey wdStory
Selection.Find.Execute "Attachements:", Forward:=False
MyRange.SetRange Start:=Selection.End, End:=MyRange.End
With MyRange.Find
.Text = "{#VN}:"
Do While .Execute
L1 = MyRange.ListFormat.ListString
If Right(L1, 1) = "." Then L1 = Left(L1, Len(L1) - 1)
BMT = MyRange.Paragraphs(1).Range.Text
BMT = Left(BMT, Len(BMT) - 1)
MyRange.Text = L1 & ":"
'=== Bookmark ==='
ActiveDocument.Bookmarks.Add Range:=MyRange.Paragraphs(1).Range, _
Name:="BByB" & L1
'=================='
Set AD = ActiveDocument.Range
AD.SetRange Start:=AD.Start, End:=MyRange.Start
With AD.Find
.Text = "\(?*\)"
.MatchWildcards = True
.Forward = False
Do While .Execute
AD.MoveEnd wdCharacter, -1
AD.MoveStart wdCharacter, 1
If InStr(.Parent.Text, BMT) Then
AD.Select
Selection.Find.Execute "{#VN}"
Selection.TypeText L1
AD.Select
H = H + 1
'=== Hyperlink ===='
ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, _
SubAddress:="BByB" & L1
'===================='
Application.StatusBar = L1 & " Reference is in process!!!..."
End If
.Parent.Collapse wdCollapseEnd
Loop
End With
.Parent.Collapse wdCollapseEnd
Loop
End With
Application.StatusBar = L1 & " Reference are linked converted to " & H & " Hyperlinks. 100% Completed!!!"
End Sub
WICHTIG: Wenn Sie möchten, dass das Makro beim Öffnen der Word-Datei automatisch ausgeführt wird, können Sie es "AutoOpen" nennen. Für Hilfe wenden Sie sich bitte an unseren Support (support@lawlift.com).
Haftungsausschluss
Es kann sein, dass die Anforderung der Informationssicherheit die Verwendung externer Makros nicht zulässt. In diesem Fall müssen Sie intern bei der für Sie zuständigen Stelle die Genehmigung des Codemusters beantragen. Gerne können Sie die Codebeispiele hier kopieren.