Eu escrevo principalmente documentação técnica. Os documentos precisam de muitas referências cruzadas. O formato das minhas referências cruzadas é sempre o mesmo:
<heading-number> <space> <heading-text>.
Adicioná-los usando a caixa de diálogo de referência cruzada é uma dor. Encontre o título, selecione o número do parágrafo no menu suspenso, insira, selecione o texto do parágrafo no menu suspenso, insira, volte ao documento, insira o espaço (e, normalmente, altere o texto do título inserido para Itálico).
Existe alguma maneira mais conveniente de fazer isso? Analisei as questões existentes sobre referências cruzadas (e há muitas delas), mas nenhuma parecia cobrir esse problema.
Responder1
Eu escrevi ummacropara inserir referências cruzadas confortavelmente, evitando todo o incômodo da caixa de diálogo de referência cruzada que você descreveu.
Ele pode inserir <heading-number>
ou <heading-text>
, mas seria facilmente adaptável para inserir a combinação desejada de ambos.
Responder2
7 anos atrás e ainda há pessoas lutando contra isso. Aqui está minha pequena contribuição: Dim strCode As String
With Dialogs(wdDialogInsertCrossReference)
.ReferenceType = "Numbered item"
.ReferenceKind = wdNumberRelativeContext
.InsertAsHyperlink = True
.SeparateNumbers = False
.Show
End With
Selection.TypeBackspace 'trick it selects the complete field
Selection.Copy
Selection.MoveRight Unit:=wdCharacter, Count:=1 ' unselect
Selection.TypeText Text:=" " ' Separate with one space
Selection.PasteAndFormat (wdPasteDefault) ' duplicate the copied field
Selection.TypeBackspace ' Select the duplicated field
strCode = Selection.Fields(1).Code ' get the code from the field
strCode = Replace(strCode, "\r ", "") ' Remove option to have paragraph text
strCode = Replace(strCode, "\w ", "")
Selection.Fields(1).Code.Text = strCode ' Update the text of the ;code text
Selection.Fields.Update ' Update the field to display § text
Selection.MoveRight Unit:=wdCharacter, Count:=1 ' Deselect the updated field
Selection.TypeText Text:=" " ' add a space at the end
Finalizar sub
Desde que esteja, funciona para mim ;-) Divirta-se e tenha tempo livre para se divertir...
Responder3
A solução de Vince S funciona perfeitamente. Não tenho permissão para comentar porque ainda não tenho reputação de 50, mas Vince, sua solução é brilhante! Isso está me economizando muito tempo.