Estou usando o Word 2010 e tenho que inserir referências cruzadas com frequência. Os itens a serem referenciados são, em sua maioria, números de tabelas e números de figuras, como o Talbe 1-2 ou as Figuras 2-4. Eles sempre incluem números de capítulo. Desejo simplificar esse procedimento de referência cruzada usando Macro, que funciona da seguinte maneira:
Eu escrevi um script VBA da seguinte forma. Consiste em um módulo padrão e dois módulos de formulário.
O módulo padrão é exibido da seguinte maneira.
Option Explicit
Public refLabel As String
'
Sub CrossReference()
Load frmLabel
frmLabel.Show
Call Form
End Sub
Private Sub Form()
MsgBox "Please specify the ” & refLabel & " number to be cross referenced."
Load frmCrossRef
frmCrossRef.Show vbModeless
End Sub
Um dos módulos de formulário para "frmLabel", que tem um botão de comando e dois botões de opção, é como abaixo.
Private Sub CommandButton1_Click()
If OptionButton1 = True Then
refLabel = OptionButton1.Caption
ElseIf OptionButton2 = True Then
refLabel = OptionButton2.Caption
End If
frmLabel.Hide
End Sub
O Botão de Opção 1 é para "Tabela" e o Botão de Opção 2 é para "Figura". Por este formulário de usuário, refLabel é "Tabela" ou "Figura", dependendo de qual opção foi escolhida.
Outro módulo de formulário para "frmCrossRef" é como abaixo. O formulário tem um ListView e um botão de comando.
Private Sub UserForm_Initialize()
With Me.ListView1
.View = lvwReport
.LabelEdit = lvwManual
.HideSelection = False
.AllowColumnReorder = True
.Gridlines = True
.ColumnHeaders.Add , "_Outline", refLabel, 200
.FullRowSelect = True
End With
items = ActiveDocument.GetCrossReferenceItems(refLabel)
For Each Item In items
ListView1.ListItems.Add , , Item
Next
End Sub
Private Sub CommandButton2_Click()
ind = ListView1.SelectedItem.Index
Selection.InsertCrossReference ReferenceType:=refLabel, _
ReferenceKind:=wdOnlyLabelAndNumber, _
ReferenceItem:=ind, InsertAsHyperlink:=True, IncludePosition:=False
Unload Me
End Sub
Parece funcionar como eu esperava, mas o ListView não mostra uma lista completa de tabelas ou figuras. Embora haja cerca de 20 tabelas ou figuras, a lista mostra apenas algumas.
Espero que qualquer um possa corrigir o script.
Obrigado.
Tags microsoft-word vba