Có thể chỉ định một kiểu cụ thể cho tất cả các tham chiếu chéo trong Word 2007 không?


32

Không có gì để thêm, tôi muốn thay đổi kiểu của tất cả các tham chiếu chéo tôi có trong tài liệu Word 2007 cùng một lúc. Nhưng tôi không biết làm thế nào để làm điều đó. Điều này có thể giải quyết như thế nào?


Câu hỏi hay, tôi không thể tìm thấy bất cứ điều gì nhanh chóng và bẩn thỉu. Nhưng tôi nghĩ nó liên quan đến phong cách của toàn bộ tài liệu
Ivo Flipse

1
@Ivo, vâng tôi cũng nghĩ đó là một cái gì đó liên quan đến phong cách của tài liệu, nhưng tôi là một nhà phát triển SW kém, không có nhiều kinh nghiệm với Word :)
Drake

@marco: xem câu trả lời cập nhật của tôi
Tạm dừng cho đến khi có thông báo mới.

vâng, câu trả lời tuyệt vời cảm ơn rất nhiều, rất rất thú vị
Drake

Câu trả lời:


38

Một số loại tham chiếu chéo được tự động định dạng theo kiểu "tham chiếu cường độ cao", nhưng hầu hết được định dạng là văn bản "bình thường".

Để áp dụng kiểu "tham chiếu mãnh liệt" cho văn bản của tham chiếu chéo:

  • chọn văn bản
  • chọn tab "Trang chủ" trong ruy-băng
  • sử dụng các nút lên xuống hoặc nút thả xuống trong nhóm "Kiểu" của dải băng, chọn kiểu "tham chiếu cường độ cao" (hoặc kiểu khác nếu bạn thích)

Để thay đổi giao diện của tất cả văn bản của một kiểu đã cho:

  • chọn tab "Trang chủ" trong ruy-băng
  • sử dụng nút thả xuống trong nhóm "Kiểu" của dải băng, chọn "Áp dụng kiểu ..."
  • trong hộp thoại "Áp dụng kiểu" trong "Tên kiểu", chọn tên của kiểu bạn muốn thay đổi (ví dụ: "tham chiếu cường độ cao")
  • Nhấp vào nút "Sửa đổi ..."
  • Thay đổi định dạng cho phù hợp với bạn và nhấp vào "OK"

Để áp dụng một kiểu cho tất cả các tham chiếu chéo cùng một lúc:

  • Nhấn Alt+ F9để hiển thị mã trường
  • Chọn tab "Trang chủ" trong ruy-băng
  • Nhấp vào "Thay thế" trong nhóm "Chỉnh sửa"
  • Trong trường "Tìm gì", nhập ^19 REF
    • (Đó là caret-one-chín-space-REF)
  • Nhấp vào trường "Thay thế bằng", nhưng không nhập bất cứ thứ gì
  • Nhấp vào nút "Khác"
  • Phần dưới cùng của hộp thoại phải có tiêu đề "Thay thế" (với quy tắc ngang sau nó)
  • Nhấp vào nút "Định dạng" và chọn "Kiểu ..."
  • Chọn một kiểu (ví dụ: "Tham chiếu dữ dội") và nhấp vào OK
  • Bây giờ nó sẽ hiển thị kiểu bạn đã chọn trong trường "Thay thế bằng"
  • Nhấp vào "Thay thế tất cả" nếu bạn cảm thấy dũng cảm hoặc sử dụng "Tìm tiếp theo" và "Thay thế" để từng bước và thay thế hoặc bỏ qua từng kiểu mã của trường tham chiếu
  • Nhấn Alt+ F9để ẩn mã trường

Xem trang này để biết thêm thông tin về các mã đặc biệt trong Tìm và Thay thế.

Đây là một macro sẽ thêm công tắc \* mergeformatcho mỗi trường. Công tắc này là cần thiết để giữ cho định dạng không bị mất nếu bạn thực hiện cập nhật trường. Bạn có thể gán macro cho tổ hợp phím và nó sẽ lần lượt đi qua các trường một lần cho mỗi lần bạn nhấn tổ hợp phím. Bạn cũng có thể chỉnh sửa macro để lặp lại toàn bộ tài liệu để tự động hóa quy trình.

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

trong thực tế hầu hết các tài liệu tham khảo nếu không phải tất cả được tạo theo mặc định với văn bản bình thường. Cảm ơn bạn đã trả lời, nhưng trong trường hợp này tôi phải đặt thủ công kiểu của từng kiểu trước khi tôi có thể cập nhật kiểu cho tất cả cùng một lúc. Tôi đã tìm kiếm một phương pháp có thể tự động hóa bước đầu tiên của quy trình
Drake

6
wow, tôi không biết cách sử dụng tìm / thay thế tiên tiến này, rất hữu ích
Drake

6
Bạn trả lời là một viên ngọc nhỏ của kiến ​​thức cô đọng. Đáng giá wiki của riêng mình!
Nỗi sợ hãi tuyệt vọng

5
Chúa ơi ... điều này hoạt động rất tốt nhưng vấn đề là: tại sao việc áp dụng một phong cách vào Tham khảo chéo!? ;)
Leniel Maccaferri

trên MS Word 16.9.1 trên Mac, tính năng này hoạt động (không thử macro), nhưng tìm / thay thế không nằm trên dải băng gia đình (tôi nghĩ vậy?), mà thay vào đó trong menu trong Chỉnh sửa-> Tìm-> Nâng cao Tìm và thay thế ...
Michael

5
  • Nhấn Alt+ F9để hiển thị mã trường
  • Sử dụng macro sau để thêm CHARFORMAT cho tất cả các tham chiếu chéo. Macro này thêm chuỗi vào trường chỉ khi nó chưa có ở đó.

    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
    
  • Sử dụng macro này để định dạng tất cả các tham chiếu chéo với kiểu "Tham chiếu tinh tế" (đảm bảo bạn có kiểu như vậy và mã trường được hiển thị):

    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
    
  • Nhấn Alt+ F9để ẩn mã trường


3

chỉnh sửa macro được tải lên bởi cyborg, chúng ta có thể dễ dàng tự động hiển thị và ẩn mã trường. để mỗi lần chúng tôi muốn cập nhật, chúng tôi không phải sử dụng chuyển đổi mã trường. Tôi đã sử dụng mã sau đây để thêm chuyển đổi mã trường.

ActiveDocument.ActiveWindow.View.ShowFieldCodes = False

Macro hoàn chỉnh như sau:

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

Đây là lần đầu tiên tôi sử dụng macro để tăng tốc công việc của mình bằng từ ngữ. cảm ơn cyborg vì vĩ mô hữu ích như vậy.


0

Cách nhanh chóng và hiệu quả:

  1. Chọn một số văn bản với định dạng bạn muốn sử dụng cho các tài liệu tham khảo.
  2. Chọn tab Trang chủ trong ruy-băng.
  3. Nhấp chuột phải vào kiểu Bình thường và chọn Cập nhật Bình thường để phù hợp với lựa chọn .
  4. Cập nhật tài liệu tham khảo với Ctrl+ A, F9.

0

Macro này mở hộp thoại Tham chiếu chéo để chèn tham chiếu chéo tại vị trí con trỏ hiện tại.

Khi bạn đóng hộp thoại Xref sau khi chèn tham chiếu, macro sẽ tiếp tục định dạng tham chiếu chéo được chèn vào siêu ký tự.

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

Cảm ơn Graham Skan tại ExpertsExchange về cách mở đoạn hội thoại Xref.


0

Kết hợp các câu trả lời ở trên với một chức năng khác để lặp qua tài liệu 'câu chuyện', để áp dụng kiểu dáng trên thân tài liệu, tiêu đề, chân trang và văn bản trên hình dạng.

Chỉ cần gọi macro SetCrossRefStyle () bên dưới để áp dụng kiểu "Tham chiếu dữ dội" cho tất cả các tham chiếu chéo.

Sub m_SetCHARFORMAT(textRanges As Collection)
' https://superuser.com/questions/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)
' https://superuser.com/questions/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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.