Willkommen,
wie können wir Ihnen helfen?

Word-Makrocodes

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

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.

Was this article helpful?

Sie können nicht finden, wonach Sie suchen?

Unser ausgezeichneter Kundensupport ist für Sie da.

Support kontaktieren