Я в основном пишу техническую документацию. Документы требуют много перекрестных ссылок. Формат моих перекрестных ссылок всегда одинаков:
<heading-number> <space> <heading-text>.
Добавление их с помощью диалога перекрестных ссылок — это боль. Найдите заголовок, выберите номер абзаца из раскрывающегося списка, вставьте, выберите текст абзаца из раскрывающегося списка, вставьте, вернитесь к документу, вставьте пробел (и, как правило, измените вставленный текст заголовка на курсив).
Есть ли более удобный способ сделать это? Я посмотрел существующие вопросы о перекрестных ссылках (а их там много), но ни один из них не затрагивал эту проблему.
решение1
Я написалмакросдля удобной вставки перекрестных ссылок, избегая всех хлопот диалога перекрестных ссылок, который вы описали.
Он может вставлять либо , <heading-number>
либо <heading-text>
, но его можно легко адаптировать для вставки желаемой комбинации обоих.
решение2
7 лет назад, а люди все еще борются с этим. Вот мой небольшой вклад: 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
Конец субтитра
Если оставить все как есть, то у меня все работает ;-) Развлекайтесь и проводите время за развлечениями...
решение3
Решение Винса С. работает отлично. Мне не разрешено комментировать, так как у меня еще нет репутации 50, но, Винс, твое решение блестящее! Оно экономит мне кучу времени.