Apakah mungkin untuk menetapkan gaya tertentu untuk semua referensi silang di Word 2007?

32

Tidak ada lagi yang perlu ditambahkan, saya ingin mengubah gaya semua referensi silang yang saya miliki dalam dokumen Word 2007 sekaligus. Tetapi saya tidak tahu bagaimana melakukannya. Bagaimana ini bisa dilakukan?

Itik jantan
sumber
Pertanyaan bagus, saya tidak dapat menemukan sesuatu yang cepat dan kotor. Tapi saya pikir ini terkait dengan gaya seluruh dokumen
Ivo Flipse
1
@Ivo, ya saya berpikir terlalu itu adalah sesuatu yang berkaitan dengan gaya dokumen, tetapi saya seorang pengembang SW miskin yang tidak banyak pengalaman dengan Word :)
Drake
@marco: lihat jawaban saya yang diperbarui
Dijeda hingga pemberitahuan lebih lanjut.
ya, jawaban yang bagus terima kasih banyak, sangat sangat menarik
Drake

Jawaban:

38

Beberapa tipe referensi silang diformat secara otomatis dengan gaya "referensi intens", tetapi sebagian besar diformat sebagai teks "normal".

Untuk menerapkan gaya "referensi intens" ke teks referensi silang:

  • pilih teks
  • pilih tab "Beranda" di pita
  • menggunakan tombol naik-turun atau tombol tarik-turun di kelompok "Gaya" pada pita, pilih gaya "referensi intens" (atau gaya lain jika Anda mau)

Untuk mengubah tampilan semua teks dari gaya yang diberikan:

  • pilih tab "Beranda" di pita
  • menggunakan tombol tarik-turun di grup "Gaya" pada pita, pilih "Terapkan gaya ..."
  • di kotak dialog "Terapkan Gaya" di bawah "Nama Gaya" pilih nama gaya yang ingin Anda ubah (mis. "referensi intens")
  • Klik tombol "Ubah ..."
  • Ubah pemformatan yang sesuai dengan Anda dan klik "OK"

Untuk menerapkan gaya ke semua referensi silang sekaligus:

  • Tekan Alt+ F9untuk menampilkan kode bidang
  • Pilih tab "Beranda" di pita
  • Klik "Ganti" di grup "Pengeditan"
  • Di bidang "Temukan apa", ketik ^19 REF
    • (Itu caret-one-sembilan-space-REF)
  • Klik di bidang "Ganti dengan", tetapi jangan mengetikkan apa pun
  • Klik tombol "Lainnya"
  • Bagian bawah dialog harus berjudul "Ganti" (dengan aturan horizontal setelahnya)
  • Klik tombol "Format" dan pilih "Gaya ..."
  • Pilih gaya (mis. "Referensi Intens") dan klik OK
  • Sekarang seharusnya memperlihatkan gaya yang Anda pilih di bawah bidang "Ganti dengan"
  • Klik "Ganti Semua" jika Anda merasa berani atau gunakan "Temukan Berikutnya" dan "Ganti" untuk melangkah dan mengganti atau melewati setiap gaya kode bidang referensi satu per satu
  • Tekan Alt+ F9untuk menyembunyikan kode bidang

Lihat halaman ini untuk informasi lebih lanjut tentang kode khusus dalam Temukan dan Ganti.

Berikut ini adalah makro yang akan menambahkan saklar \* mergeformatke masing-masing bidang. Switch ini diperlukan untuk menjaga agar format tidak hilang jika Anda melakukan pembaruan bidang. Anda dapat menetapkan makro ke tombol dan itu akan melangkah melalui bidang satu per satu untuk setiap kali Anda menekan tombol. Anda juga dapat mengedit makro untuk mengulang seluruh dokumen untuk mengotomatiskan proses.

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
Dijeda sampai pemberitahuan lebih lanjut.
sumber
sebenarnya sebagian besar referensi jika tidak semua dibuat secara default dengan teks normal. Terima kasih atas jawabannya, tetapi dalam hal ini saya harus mengatur secara manual gaya masing-masing sebelum saya dapat memperbarui gaya untuk semua sekaligus. Saya sedang mencari metode yang dapat mengotomatiskan langkah pertama dari proses
Drake
6
wow, saya tidak tahu ini menggunakan maju menemukan / mengganti, sangat membantu
Drake
6
Jawaban Anda adalah permata kecil dari pengetahuan yang kental. Layak wiki sendiri!
Meringis Putus Asa
5
Yesus Kristus ... ini bekerja dengan baik tetapi masalahnya adalah: mengapa membuatnya sangat sulit untuk menerapkan gaya ke Referensi Silang !? ;)
Leniel Maccaferri
pada MS Word 16.9.1 pada Mac, ini berfungsi (tidak mencoba makro), tetapi menemukan / mengganti tidak pada pita rumah (saya pikir?), tetapi pada menu di bawah Edit-> Find-> Advanced Temukan dan Ganti ...
Michael
5
  • Tekan Alt+F9untuk menampilkan kode bidang
  • Gunakan makro berikut untuk menambahkan CHARFORMAT ke semua referensi silang. Makro ini menambahkan string ke bidang hanya jika belum ada di sana.

    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
  • Gunakan makro ini untuk memformat semua referensi silang dengan gaya "Referensi Halus" (pastikan Anda memiliki gaya seperti itu, dan kode bidang ditampilkan):

    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
  • Tekan Alt+ F9untuk menyembunyikan kode bidang

cyborg
sumber
3

mengedit makro yang diunggah oleh cyborg, kita dapat dengan mudah mengotomatiskan memperlihatkan dan menyembunyikan kode bidang. sehingga setiap kali kami ingin memperbarui, kami tidak perlu menggunakan kode bidang toggle. Saya menggunakan kode berikut untuk menambahkan toggle kode bidang.

ActiveDocument.ActiveWindow.View.ShowFieldCodes = False

Makro lengkap adalah sebagai berikut:

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

Ini adalah pertama kalinya saya menggunakan makro untuk mempercepat pekerjaan saya dalam kata. terima kasih cyborg untuk makro yang sangat membantu.

Jaykrushna patel
sumber
0

Cara cepat dan efektif:

  1. Pilih beberapa teks dengan format yang ingin Anda gunakan untuk referensi.
  2. Pilih tab Beranda di pita.
  3. Klik kanan pada gaya Normal dan pilih Perbarui Normal untuk mencocokkan pilihan .
  4. Referensi Update dengan Ctrl+ A, F9.
Evgeny
sumber
0

Makro ini membuka kotak dialog Referensi Silang untuk menyisipkan referensi silang di posisi kursor saat ini.

Ketika Anda menutup kotak dialog Xref setelah memasukkan referensi makro melanjutkan untuk memformat referensi silang yang dimasukkan ke superscript.

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

Terima kasih kepada Graham Skan di ExpertsExchange untuk cara membuka dialog Xref.

TJH
sumber
0

Menggabungkan jawaban di atas dengan fungsi lain untuk mengulang melalui 'cerita' dokumen, untuk menerapkan gaya pada badan dokumen, header, footer dan teks pada bentuk.

Cukup panggil makro SetCrossRefStyle () di bawah ini untuk menerapkan gaya "Referensi Intens" ke semua referensi silang.

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
eymre
sumber