Info
Esta función se encuentra solo disponible en el plan ilimitado.
Ejemplo 1: Código para la creación automática de notas a pie de página
1. Cómo funciona la macro:
Ejemplo:
Lorum voluptua.{FN:ICC-01/09-02/11; emphasis} At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.{FN:ICC-01/09-02/11; emphasis}
Sugerencia
No debe haber un espacio entre la nota al pie y la palabra u oración a la que se hace referencia; de lo contrario, este espacio permanecerá con el número de la nota al pie posterior y la oración o palabra a la que se hace referencia.
Al final, la macro solicita la ubicación del nuevo archivo de Word.
2. Plantillas de formato utilizadas
Se utilizan los estilos estándar de Word. Para desviar los cambios en la presentación de la nota al pie, esta es la plantilla de formato "Texto de la nota al pie". Para una adaptación individual del número de nota al pie, se debe adaptar la plantilla de formato "Caracteres de nota al pie" en el diseño avanzado.
3. Ejemplo de código
Hay muchas formas diferentes de programar una macro de este tipo. No dude en ponerse en contacto con nuestro servicio de asistencia. A continuación, se muestra un ejemplo de una macro:
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
Información
Existen restricciones en el funcionamiento de la macro si el documento contiene campos de función (por ejemplo, tablas de contenido) o URL en las que se puede hacer clic (":: url"). A continuación se muestra una alternativa a esto.
4. Ejemplo de código para documentos con campos de función o URL en las que se puede hacer clic
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
Información
Dado que la macro busca cada párrafo individualmente y encuentra y crea notas al pie, es importante que siempre haya solo notas al pie, campos de función o hipervínculos (":: url") en un párrafo. Si este no es el caso, pueden ocurrir problemas de visualización. Además, se debe tener cuidado de que la marcación de una nota al pie "{FN: ...} esté siempre dentro de un párrafo y no en varios párrafos.
5. Código para la preparación de notas al pie para importar
Si quiere importar un texto que contiene notas al pie y quiere que se visualicen como tal nuevamente al exportar, puede también utilizar una macro para esto. La siguiente macro convierte sus notas al pie en el formato "{FN: ...} descripto anteriormente. De esta manera, puede preparar textos extensivos con notas pie apropiadamente.
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
Para volver a convertir las expresiones en notas al pie para exportar, puede utilizar la primera macro nuevamente.
Ejemplo 2: Código para la creación automática de casillas de verificación, campos de texto y protección contra escritura.
1. Cómo funciona la macro:
Ejemplo:
{□} Opción 1
{□} Opción 2
Nombre: {...}
Dirección: {...}
Atención
Cuando se ejecuta la macro, convierte automáticamente el archivo .docm en un archivo .docx y lo guarda en la misma carpeta donde se guardó el archivo .docm.
Información
Si desea que la macro se ejecute automáticamente la primera vez que la abra, reemplace el nombre "CreateContentControls" por "AutoOpen".
2. Ejemplo de código
Sugerencia
Si desea que la macro se ejecute automáticamente la primera vez que abra el archivo de Word generado, reemplace el nombre "CreateContentControls" en la primera línea con "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
Atención
Cuando ejecuta la macro, el .docm en la misma carpeta se convierte automáticamente en un archivo .docx.
Información
Existen restricciones en el funcionamiento de la macro si el documento contiene campos de función (por ejemplo, tablas de contenido) o URL en las que se puede hacer clic (":: url"). Además, pueden surgir dificultades si en las tablas se utilizan las expresiones "{□}" o "{...}" mencionadas anteriormente. A continuación se muestra una alternativa a esto.
Ejemplo 3: Código para documentos con campos de función, tablas o URL en las que se puede hacer clic.
Si su documento debe contener otros campos de función además de notas al pie, como tablas de contenido o enlaces en los que se puede hacer clic (":: url"), o si las expresiones "{□}" o "{...}" deben ser colocadas en tablas, es necesario utilizar una macro adecuadamente adaptada. A continuación, le proporcionamos un código de muestra:
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
Atención
Dado que la macro busca las expresiones en cada párrafo individualmente, es importante que solo haya expresiones, campos de función o hipervínculos (":: url") en un párrafo. Si este no es el caso, pueden ocurrir problemas de visualización. Además, se debe tener cuidado de que la marcación de las casillas de verificación y los campos de texto con las expresiones "{□}" o "{...}" siempre ocurra dentro de un párrafo y no en varios párrafos.
Ejemplo 4: Código para formateo automático de notas al pie
1. Cómo funciona la macro:
El objetivo es implementar automáticamente el formato que se muestra a continuación:
Información
Dado que la macro automatiza los pasos manuales para cada nota al pie, puede llevar algún tiempo si hay muchas notas al pie. En nuestra experiencia, se necesitan unos 40 segundos para unas 70 notas al pie. Desafortunadamente, esto no se puede acelerar dentro de Word. Si desea que la macro se ejecute automáticamente la primera vez que la abra, reemplace el nombre "FormateFootnotes" por "AutoOpen".
Atención
Cuando se ejecuta la macro, convierte el archivo .docm en un archivo .docx y lo guarda en la ubicación que especifique.
2. Ejemplo de código
Hay muchas formas diferentes de programar una macro de este tipo. No dude en ponerse en contacto con nuestro servicio de asistencia. A continuación, se muestra un ejemplo de una macro:
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
Ejemplo 5: Código para insertar tabulaciones dentro de un párrafo
1. Cómo funciona la macro:
La alineación del texto en Lawlift generalmente se realiza mediante el formato de los párrafos individuales. Para sangrar áreas de texto dentro de un párrafo, está disponible la siguiente macro.
Aquí se explica en detalle cómo insertar el código y establecer las tabulaciones.
2. Ejemplo de código:
Hay muchas formas diferentes de programar una macro de este tipo. No dude en ponerse en contacto con nuestro servicio de asistencia. A continuación, se muestra un ejemplo de una macro:
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
Ejemplo 6: Código para marcar marcadores de posición vacíos
1. Cómo funciona la macro:
Esta macro le ofrece la función de resaltar marcadores de posición vacíos en su documento de Word en color. Después de insertar el código, los marcadores de posición que no se han completado se resaltan automáticamente en amarillo cuando se abre el documento de Word.
2. Ejemplo de código:
Hay muchas formas diferentes de programar una macro de este tipo. No dude en ponerse en contacto con nuestro servicio de asistencia. A continuación, se muestra un ejemplo de una macro:
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
Ejemplo 7: Preparar enlaces formateados para la importación de LAWLIFT
1. Cómo funciona la macro:
LAWLIFT le ofrece la posibilidad de formatear una URL insertada como un hipervínculo con un título utilizando la función "título (...)". Le hemos mostrado aquí exactamente cómo funciona esto.
Sin embargo, si tiene un documento de Word por adelantado que se va a automatizar y ya contiene dichos enlaces formateados, no puede simplemente copiar el texto en LAWLIFT. Solo se copiarían los títulos, pero no las URL.
Una macro puede ayudar aquí, que convierte todos los enlaces formateados en el documento de Word en la forma ":: url [www.beispielurl.detitle (ejemplo)]" legible por LAWLIFT. Posteriormente, los enlaces formateados pueden simplemente copiarse del archivo de Word a la plantilla LAWLIFT. LAWLIFT reconoce las expresiones y las inserta como URL en las que se puede hacer clic con el título dado, como se muestra en nuestra ayuda.
Los enlaces sin formato también se pueden copiar simplemente en la plantilla de LAWLIFT sin utilizar esta macro y LAWLIFT los reconoce como tales.
2. Ejemplo de código:
Hay muchas formas diferentes de programar una macro. No dude en ponerse en contacto con nuestro servicio de asistencia.
A continuación, se muestra un ejemplo de una macro que prepara el archivo fuente para importarlo a LAWLIFT:
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
Información
Ejecute la macro solo una vez; de lo contrario, las funciones se anidarán unas dentro de otras.
Ejemplo 8: Código para establecer una numeración dentro de tablas
1. Cómo funciona la macro:
La numeración de filas en una tabla funciona básicamente como la numeración habitual en Lawlift, es decir, a través de niveles. Para identificar estos niveles dentro de la tabla, se utiliza la expresión "[#]". Aquí "[#]" define el 1er nivel, "[##]" el 2do nivel, "[###]" el 3er nivel y así sucesivamente. Se pueden utilizar los nueve niveles proporcionados por Word. La numeración que finalmente se inserta debe determinarse de antemano en una plantilla de formato de lista dentro del membrete. Además, esta plantilla de formato de lista debe almacenarse en el código de macro. La denominación de la plantilla de formato de lista es de especial importancia, ya que el nombre se utiliza en la macro. En nuestro caso, la lista se denominó "A. / 1 . / 1.1.". Sin embargo, también puede dar a la lista un nombre diferente y adaptar el código de la macro en consecuencia.
Si tiene alguna pregunta al respecto, comuníquese con nuestro equipo de soporte en support@lawlift.com.
2. Ejemplo de código:
A continuación encontrará un código de ejemplo que aplica la numeración definida en la plantilla de formato de lista a los párrafos dentro de una tabla. Estos párrafos deben marcarse primero con [#], [##], etc. en la plantilla LAWLIFT. En cuanto se ejecuta la macro, se añade la numeración en los lugares correspondientes. Tenga en cuenta que aquí también se tiene en cuenta la numeración fuera de la tabla.
En sentido estricto, el ejemplo de código consta de dos subrutinas diferentes. La primera determina que todos los niveles de numeración se alineen a la izquierda. Esto garantiza una presentación clara dentro de la tabla, donde a menudo no hay mucho espacio para sangrías. La segunda subrutina convierte todos los párrafos marcados con los comandos [#] en párrafos numerados y se basa en la numeración definida previamente en la plantilla de formato de lista "A. / 1 . / 1.1.".
Información
Debe ejecutar la macro manualmente después de exportar el archivo desde Lawlift. Si desea ejecutarlo automáticamente, cambie el nombre de la macro a "AutoOpen". Al hacer esto, la macro se ejecuta automáticamente cuando se abre el archivo de Word.
Si hay una gran cantidad de expresiones en el documento, la ejecución puede tardar unos segundos.
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
Ejemplo 9: Código para generar numeración variable de adjuntos
1. Cómo funciona la macro:
Este ejemplo de código le ofrece la posibilidad de numerar los archivos adjuntos de forma variable y establecer referencias interactivas en el texto. Para ello, utilice la expresión "{#VN}", que se coloca en el lugar de la numeración respectiva, seguida del nombre individual del adjunto. Para las referencias en el texto, se utiliza la expresión "(... Attachment {#VN}: Nombre_del_adjunto)".
2. Ejemplo de código:
Hay algunas características especiales que se deben tener en cuenta al utilizar la macro. Para garantizar un funcionamiento adecuado, la plantilla debe contener el título "Attachments". Además, los archivos adjuntos deben mostrarse en una lista numerada. A continuación, encontrará una ilustración de cómo funciona la macro:
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
IMPORTANTE: Si desea que la macro se ejecute automáticamente cuando abra el archivo de Word, puede llamarlo "AutoOpen". Para obtener ayuda, comuníquese con nuestro soporte (support@lawlift.com).