ListViews incompletos para CrossReference

1

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:

  1. Um Formulário de Usuário com Botões de Opção aparecerá para eu especificar Tabela ou Figura. (Por exemplo, vou escolher Tabela.)
  2. Em seguida, uma lista de todas as tabelas no documento será exibida usando um formulário de usuário com visualização de lista.
  3. Eu rolarei a lista e escolherei a que desejo me referir. Por exemplo, escolherei a Tabela 3-4.
  4. "Tabela 3-4" (etiqueta e número) será inserido.

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.

    
por Nono 15.10.2014 / 07:31

0 respostas