Чи можна призначити певний стиль усім перехресним посиланням у Word 2007?


32

Більше нічого додати, я б хотів одразу змінити стиль усіх перехресних посилань, які є у документі Word 2007. Але я поняття не маю, як це зробити. Як це можна зробити?


Добре запитання, я не міг знайти нічого швидкого і брудного. Але я думаю, що це пов’язано зі стилем усього документа
Іво Фліпс

1
@ Ivo, так, я теж думаю, що це щось пов’язане зі стилем документа, але я поганий розробник SW, який не має великого досвіду роботи з Word :)
Drake

@marco: дивіться мою оновлену відповідь
Призупинено до подальшого повідомлення.

так, чудова відповідь дякую дуже, дуже дуже цікаво
Дрейк

Відповіді:


38

Деякі типи перехресних посилань автоматично форматуються у стилі "інтенсивна довідка", проте більшість форматується як "звичайний" текст.

Щоб застосувати стиль "інтенсивного посилання" до тексту перехресного посилання:

  • виберіть текст
  • виберіть на стрічці вкладку «Головна»
  • використовуючи або кнопки вгору, або кнопку, що випадає, в групі стрічки "Стилі", виберіть стиль "інтенсивний довідник" (або інший стиль, якщо вам зручніше)

Щоб змінити зовнішній вигляд всього тексту заданого стилю:

  • виберіть на стрічці вкладку «Головна»
  • за допомогою випадаючої кнопки в групі стрічки "Стилі" виберіть "Застосувати стилі ..."
  • у діалоговому вікні "Застосувати стилі" у розділі "Ім'я стилю" виберіть назву стилю, який ви хочете змінити (наприклад, "інтенсивне посилання")
  • Натисніть кнопку "Змінити ..."
  • Змініть форматування, яке вам підходить, і натисніть "ОК"

Щоб застосувати стиль до всіх перехресних посилань одночасно:

  • Натисніть Alt+, F9щоб показати коди полів
  • Виберіть на стрічці вкладку «Головна»
  • Клацніть «Замінити» у групі «Редагування»
  • У полі "Знайти що" введіть ^19 REF
    • (Це каре-один-дев’ять-космос-REF)
  • Клацніть у полі «Замінити на», але нічого не вводите
  • Натисніть кнопку "Більше"
  • Нижній розділ діалогового вікна має мати назву "Замінити" (з горизонтальним правилом після нього)
  • Натисніть кнопку "Формат" і виберіть "Стиль ..."
  • Виберіть стиль (наприклад, "Інтенсивна довідка") і натисніть кнопку ОК
  • Тепер він повинен відображати вибраний стиль у полі "Замінити"
  • Клацніть «Замінити все», якщо ви відчуваєте себе сміливим або використовуйте «Знайти далі» та «Замінити», щоб переглядати та замінювати або пропускати стиль кожного опорного поля окремо
  • Натисніть Alt+, F9щоб приховати коди полів

Дивіться цю сторінку для отримання додаткової інформації про спеціальні коди в розділі Знайти та замінити.

Ось макрос, який додасть комутатор \* mergeformatдо кожного з полів. Цей перемикач необхідний для запобігання втраті форматування, якщо ви робите оновлення поля. Ви можете призначити макрос натисканню клавіші, і він буде переходити через поля по одному для кожного натискання клавіші. Ви також можете відредагувати макрос, щоб перетворити цикл на весь документ, щоб автоматизувати процес.

Sub mf()
'
' mf Macro
' Find cross references and add \* mergeformat
'
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "^19 REF"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveLeft Unit:=wdCharacter, Count:=1
    Selection.TypeText Text:="\* mergeformat "
    Selection.Find.Execute
End Sub

насправді більшість посилань, якщо не всі, створюються за замовчуванням звичайним текстом. Дякую за відповідь, але в цьому випадку я повинен вручну встановити стиль кожного, перш ніж я можу оновити стиль для всіх одночасно. Я шукав метод, який може автоматизувати перший крок процесу
Дрейк

6
уау, я не знав цього розширеного використання пошуку / заміни, дуже корисно
Дрейк

6
Ви відповідаєте - це маленький дорогоцінний камінь зведених знань. Варто власної вікі!
Гримаса відчаю

5
Ісусе Христе ... це чудово працює, але річ у тому, чому так важко застосовувати стиль до перехресних посилань !? ;)
Леніел Маккаферрі

в MS Word 16.9.1 на Mac це працює (не намагався макрос), але пошук / заміна знаходиться не на домашній стрічці (я думаю?), а натомість у меню в розділі Правка-> Знайти-> Додатково Знайдіть і замініть ...
Михайло

5
  • Натисніть Alt+, F9щоб показати коди полів
  • Використовуйте наступний макрос, щоб додати CHARFORMAT до всіх перехресних посилань. Цей макрос додає рядок до поля, лише якщо його ще немає.

    Sub SetCHARFORMAT()
    '
    ' Set CHARFORMAT switch to all {REF} fields. Replace MERGEFORMAT.
    '
    '
        Dim oField As Field
        Dim oRng As Range
        For Each oField In ActiveDocument.Fields
        'For Each oField In Selection.Fields
            If InStr(1, oField.Code, "REF ") = 2 Then
                If InStr(1, oField.Code, "MERGEFORMAT") <> 0 Then
                    oField.Code.Text = Replace(oField.Code.Text, "MERGEFORMAT", "CHARFORMAT")
                End If
                If InStr(1, oField.Code, "CHARFORMAT") = 0 Then
                    oField.Code.Text = oField.Code.Text + "\* CHARFORMAT "
                End If
            End If
        Next oField
    
    
    End Sub
    
  • Використовуйте цей макрос для форматування всіх перехресних посилань у стилі "Тонка довідка" (переконайтеся, що у вас такий стиль, і що поля поля показані):

    Sub SetCrossRefStyle()
    '
    ' Macro to set styole of all cross references to "Subtle Reference"
    '
    '
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        Selection.Find.Replacement.Style = ActiveDocument.Styles( _
            "Subtle Reference")
        With Selection.Find
            .Text = "^19 REF"
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindContinue
            .Format = True
            .MatchCase = False
            .MatchWholeWord = False
            .MatchKashida = False
            .MatchDiacritics = False
            .MatchAlefHamza = False
            .MatchControl = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
    End Sub
    
  • Натисніть Alt+, F9щоб приховати коди полів


3

редагуючи макрос, завантажений кіборгом, ми можемо легко автоматизувати показ та приховування кодів поля. так що кожен раз, коли ми хочемо оновити, нам не доведеться використовувати перемикані кодові поля. Я використовував наступний код для додавання перемикання коду поля.

ActiveDocument.ActiveWindow.View.ShowFieldCodes = False

Повний макрос такий:

Sub SetCrossRefStyle()
'
' Macro to set styole of all cross references to "Subtle Reference"
'
'
ActiveDocument.ActiveWindow.View.ShowFieldCodes = True
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Style = ActiveDocument.Styles( _
    "Subtle Reference")
With Selection.Find
    .Text = "^19 REF"
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindContinue
    .Format = True
    .MatchCase = False
    .MatchWholeWord = False
    .MatchKashida = False
    .MatchDiacritics = False
    .MatchAlefHamza = False
    .MatchControl = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
ActiveDocument.ActiveWindow.View.ShowFieldCodes = False
End Sub

Це вперше я використовую макроси, щоб прискорити роботу словом. дякую Кіборгу за такий корисний макрос.


0

Швидкий та ефективний спосіб:

  1. Виберіть текст із форматуванням, яке ви хочете використовувати для посилань.
  2. Виберіть вкладку Домашня сторінка на стрічці.
  3. Клацніть правою кнопкою миші стиль « Нормальний» та оберіть « Оновити нормальне» для вибору відповідності .
  4. Посилання Update з Ctrl+ A, F9.

0

Цей макрос відкриває діалогове вікно "Перехресний довідник", щоб вставити перехресну посилання на поточну позицію курсору.

Коли ви закриєте діалогове вікно Xref після вставки посилання, макрос відновиться для форматування вставленого перехресного посилання на суперскрипт.

Sub XrefSuper()
'
' This opens the Cross Reference dialogue box to insert a cross reference at the current cursor position.
'   When the dialogue box is closed after inserting the reference the macro resumes to format the inserted cross reference to superscript.
'
'
Dim wc As Integer
    wc = ActiveDocument.Characters.Count

Dim dlg As Dialog
    Set dlg = Dialogs(wdDialogInsertCrossReference)
        dlg.Show 'Open dialogue and perform the insertion from the dialog box) 
                 'Macro continues after closing CrossRef dialogue box

    If wc = ActiveDocument.Characters.Count Then Exit Sub   'If we failed to insert something then exit

    Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Font.Superscript = wdToggle
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.Font.Superscript = wdToggle
End Sub

Дякуємо Грему Скану в ExpertsExchange за те, як відкрити діалог Xref.


0

Поєднуючи відповіді вище з іншою функцією, щоб переглядати "історії" документа, застосовувати стилі на корпус документа, заголовки, колонтитули та текст на фігурах.

Просто зателефонуйте макросу SetCrossRefStyle () нижче, щоб застосувати стиль "Інтенсивна довідка" до всіх перехресних посилань.

Sub m_SetCHARFORMAT(textRanges As Collection)
' /superuser/13531/is-it-possible-to-assign-a-specific-style-to-all-cross-references-in-word-2007
'
' Set CHARFORMAT switch to all {REF} fields. Replace MERGEFORMAT.
' Requires ActiveDocument.ActiveWindow.View.ShowFieldCodes = True
'
    Dim oField As Field
    Dim oRng As Range
    For Each oRng In textRanges
        For Each oField In oRng.Fields
            If InStr(1, oField.Code, "REF ") = 2 Then
                If InStr(1, oField.Code, "MERGEFORMAT") <> 0 Then
                    oField.Code.Text = Replace(oField.Code.Text, "MERGEFORMAT", "CHARFORMAT")
                End If
                If InStr(1, oField.Code, "CHARFORMAT") = 0 Then
                    oField.Code.Text = oField.Code.Text + "\* CHARFORMAT "
                End If
            End If
        Next oField
    Next oRng
End Sub


Sub m_AddCrossRefStyle(textRanges As Collection)
' /superuser/13531/is-it-possible-to-assign-a-specific-style-to-all-cross-references-in-word-2007
'
' Macro to set style of all cross references to "Intense Reference"
' Requires ActiveDocument.ActiveWindow.View.ShowFieldCodes = True
'
    For Each oRng In textRanges
        oRng.Find.ClearFormatting
        oRng.Find.Replacement.ClearFormatting
        oRng.Find.Replacement.Style = ActiveDocument.Styles("Intense Reference")
        With oRng.Find
            .Text = "^19 REF"
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindContinue
            .Format = True
            .MatchCase = False
            .MatchWholeWord = False
            .MatchKashida = False
            .MatchDiacritics = False
            .MatchAlefHamza = False
            .MatchControl = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        oRng.Find.Execute Replace:=wdReplaceAll
    Next oRng
End Sub


Function m_GetAllTextRanges() As Collection
' https://wordmvp.com/FAQs/Customization/ReplaceAnywhere.htm
' https://www.mrexcel.com/forum/excel-questions/443052-returning-collection-function.html
'
' Get text ranges in all document parts.
'
    Set m_GetAllTextRanges = New Collection
    For Each rngStory In ActiveDocument.StoryRanges
        'Iterate through all linked stories
        Do
            m_GetAllTextRanges.Add rngStory
            On Error Resume Next
            Select Case rngStory.StoryType
                Case 6, 7, 8, 9, 10, 11
                If rngStory.ShapeRange.Count > 0 Then
                    For Each oShp In rngStory.ShapeRange
                        If oShp.TextFrame.HasText Then
                            m_GetAllTextRanges.Add oShp.TextFrame.TextRange
                        End If
                    Next
                End If
                Case Else
                    'Do Nothing
            End Select
            On Error GoTo 0
            'Get next linked story (if any)
            Set rngStory = rngStory.NextStoryRange
        Loop Until rngStory Is Nothing
    Next
End Function

Sub SetCrossRefStyle()
'
' 1. Get all text ranges since Selection.Find only works on document body, but not on headers/footers
' 2. Add CHARFORMAT to make styling persistent
' 3. Add styling to all references
'
    Dim textRanges As Collection
    Set textRanges = m_GetAllTextRanges
    ActiveDocument.ActiveWindow.View.ShowFieldCodes = True
    m_SetCHARFORMAT textRanges
    m_AddCrossRefStyle textRanges
    ActiveDocument.ActiveWindow.View.ShowFieldCodes = False
End Sub
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.