Agregar cómodamente un número de encabezado Y texto para una referencia cruzada

Agregar cómodamente un número de encabezado Y texto para una referencia cruzada

Principalmente escribo documentación técnica. Los documentos necesitan muchas referencias cruzadas. El formato de mis referencias cruzadas es siempre el mismo:

<heading-number> <space> <heading-text>.

Agregarlos usando el cuadro de diálogo de referencia cruzada es una molestia. Busque el encabezado, seleccione el número de párrafo del menú desplegable, inserte, seleccione el texto del párrafo del menú desplegable, inserte, vuelva al documento, inserte el espacio (y, normalmente, cambie el texto del encabezado insertado a cursiva).

¿Existe alguna forma más conveniente de hacer esto? Miré las preguntas existentes sobre referencias cruzadas (y hay muchas) pero ninguna parecía cubrir este tema.

Respuesta1

he escrito unmacropara insertar cómodamente referencias cruzadas, evitando todas las molestias del diálogo de referencias cruzadas que has descrito.
Puede insertar cualquiera de los dos <heading-number>o <heading-text>, pero sería fácilmente adaptable para insertar la combinación deseada de ambos.

Respuesta2

Hace 7 años y todavía hay gente luchando con eso. Aquí está mi pequeña contribución: 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

Subtítulo final

Siempre que tal como esté, funcione para mí ;-) Diviértete y ten tiempo para divertirte...

Respuesta3

La solución de Vince S funciona perfectamente. No puedo comentar porque todavía no tengo una reputación de 50, pero Vince, ¡tu solución es brillante! Me está ahorrando un montón de tiempo.

información relacionada