Ist es möglich, allen Querverweisen in Word 2007 einen bestimmten Stil zuzuweisen?

32

Dem ist nichts hinzuzufügen. Ich möchte den Stil aller Querverweise in einem Word 2007-Dokument auf einmal ändern . Aber ich habe keine Ahnung, wie es geht. Wie geht das?

Erpel
quelle
Gute Frage, ich konnte nichts schnelles und schmutziges finden. Aber ich denke, es hängt mit dem Stil des gesamten Dokuments zusammen
Ivo Flipse
1
@ Ivo, ja, ich denke auch, das ist etwas im Zusammenhang mit dem Stil des Dokuments, aber ich bin ein armer SW-Entwickler mit wenig Erfahrung mit Word :)
Drake
@marco: siehe meine aktualisierte Antwort
Bis auf weiteres angehalten.
Ja, tolle Antwort, vielen Dank, sehr, sehr interessant
Drake

Antworten:

38

Einige Querverweistypen werden automatisch mit dem Stil "Intensive Referenz" formatiert, die meisten werden jedoch als "normaler" Text formatiert.

So wenden Sie den Stil "Intensive Referenz" auf den Text des Querverweises an:

  • wähle den Text aus
  • Wählen Sie die Registerkarte "Home" in der Multifunktionsleiste
  • Wählen Sie mit den Auf- / Ab-Tasten oder der Dropdown-Taste in der Gruppe "Stile" des Menübands den Stil "Intensive Referenz" (oder einen anderen Stil, wenn Sie dies bevorzugen).

So ändern Sie das Erscheinungsbild des gesamten Texts eines bestimmten Stils:

  • Wählen Sie die Registerkarte "Home" in der Multifunktionsleiste
  • Wählen Sie über die Dropdown-Schaltfläche in der Gruppe "Stile" des Menübands "Stile anwenden ..." aus.
  • Wählen Sie im Dialogfeld "Stile anwenden" unter "Stilname" den Namen des Stils aus, den Sie ändern möchten (z. B. "Intensive Referenz").
  • Klicken Sie auf die Schaltfläche "Ändern ..."
  • Ändern Sie die Formatierung nach Ihren Wünschen und klicken Sie auf "OK".

So wenden Sie einen Stil auf alle Querverweise gleichzeitig an:

  • Drücken Sie Alt+ F9, um die Feldfunktionen anzuzeigen
  • Wählen Sie im Menüband die Registerkarte "Home"
  • Klicken Sie in der Gruppe "Bearbeiten" auf "Ersetzen"
  • Geben Sie im Feld "Suchen nach" Folgendes ein ^19 REF
    • (Das ist Caret-One-Nine-Space-REF)
  • Klicken Sie in das Feld "Ersetzen durch", geben Sie jedoch nichts ein
  • Klicken Sie auf die Schaltfläche "Mehr"
  • Der untere Bereich des Dialogs sollte "Ersetzen" heißen (mit einem horizontalen Lineal danach)
  • Klicken Sie auf die Schaltfläche "Format" und wählen Sie "Stil ..."
  • Wählen Sie einen Stil (zB "Intensive Reference") und klicken Sie auf OK
  • Es sollte nun den Stil anzeigen, den Sie im Feld "Ersetzen durch" ausgewählt haben
  • Klicken Sie auf "Alle ersetzen", wenn Sie sich mutig fühlen, oder verwenden Sie "Weitersuchen" und "Ersetzen", um den Stil jedes Referenzfeldcodes einzeln zu ersetzen oder zu überspringen
  • Drücken Sie Alt+ F9, um die Feldfunktionen auszublenden

Auf dieser Seite finden Sie weitere Informationen zu speziellen Codes unter Suchen und Ersetzen.

Hier ist ein Makro, das den Schalter \* mergeformatzu jedem der Felder hinzufügt . Dieser Schalter ist erforderlich, um zu verhindern, dass die Formatierung verloren geht, wenn Sie eine Feldaktualisierung durchführen. Sie können das Makro einem Tastendruck zuweisen. Bei jedem Tastendruck werden die Felder einzeln durchlaufen. Sie können das Makro auch bearbeiten, um eine Schleife über das gesamte Dokument zu erstellen und den Prozess zu automatisieren.

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
Bis auf weiteres angehalten.
quelle
Tatsächlich werden die meisten Verweise, wenn nicht alle, standardmäßig mit normalem Text erstellt. Vielen Dank für die Antwort, aber in diesem Fall muss ich den Stil jedes einzelnen manuell festlegen, bevor ich den Stil für alle gleichzeitig aktualisieren kann. Ich suchte nach einer Methode, die den ersten Schritt des Prozesses automatisieren kann
Drake,
6
Wow, ich wusste nicht, diese erweiterte Verwendung von Suchen / Ersetzen, sehr hilfreich
Drake
6
Ihre Antwort ist ein kleines Juwel von verdichtetem Wissen. Ein eigenes Wiki wert!
Grimasse der Verzweiflung
5
Jesus Christus ... das funktioniert großartig, aber die Sache ist: Warum ist es so schwierig, einen Stil auf Querverweise anzuwenden? ;)
Leniel Maccaferri
Unter MS Word 16.9.1 unter Mac funktioniert dies (habe das Makro nicht ausprobiert), aber das Suchen / Ersetzen befindet sich nicht in der Startleiste (glaube ich?), sondern im Menü unter Bearbeiten-> Suchen-> Erweitert Suchen und Ersetzen ...
Michael
5
  • Drücken Sie Alt+ F9, um die Feldfunktionen anzuzeigen
  • Verwenden Sie das folgende Makro, um allen Querverweisen CHARFORMAT hinzuzufügen. Dieses Makro fügt die Zeichenfolge nur dann zum Feld hinzu, wenn sie noch nicht vorhanden ist.

    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
  • Verwenden Sie dieses Makro, um alle Querverweise mit dem Stil "Subtle Reference" zu formatieren (stellen Sie sicher, dass Sie einen solchen Stil haben und die Feldfunktionen angezeigt werden):

    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
  • Drücken Sie Alt+ F9, um die Feldfunktionen auszublenden

Cyborg
quelle
3

Wenn Sie das vom Cyborg hochgeladene Makro bearbeiten, können Sie das Ein- und Ausblenden der Feldfunktionen ganz einfach automatisieren. Damit müssen wir nicht jedes Mal, wenn wir aktualisieren möchten, die Feldfunktionen umschalten. Ich habe folgenden Code verwendet, um den Feldcode umzuschalten.

ActiveDocument.ActiveWindow.View.ShowFieldCodes = False

Das vollständige Makro lautet wie folgt:

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

Dies ist das erste Mal, dass ich Makros verwende, um meine Arbeit in Word zu beschleunigen. Danke Cyborg für dieses hilfreiche Makro.

Jaykrushna Patel
quelle
0

Schneller und effektiver Weg:

  1. Wählen Sie einen Text mit der Formatierung aus, die Sie für die Verweise verwenden möchten.
  2. Wählen Sie im Menüband die Registerkarte Startseite .
  3. Klicken Sie mit der rechten Maustaste auf den Stil " Normal" und wählen Sie " Normal aktualisieren", um die Auswahl zu treffen .
  4. Update Referenzen mit Ctrl+ A, F9.
Evgeny
quelle
0

Dieses Makro öffnet das Dialogfeld Querverweis, in dem Sie an der aktuellen Cursorposition einen Querverweis einfügen können.

Wenn Sie das Dialogfeld XRef nach dem Einfügen des Verweises schließen, wird der Makro fortgesetzt, um den eingefügten Verweis auf hochgestellt zu formatieren.

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

Vielen Dank an Graham Skan von ExpertsExchange für das Öffnen des XRef-Dialogs.

TJH
quelle
0

Kombinieren Sie die obigen Antworten mit einer anderen Funktion, um Dokument-Storys zu durchlaufen und Formatierungen für Dokumentkörper, Kopf- und Fußzeilen sowie Text auf Formen anzuwenden.

Rufen Sie einfach das unten stehende SetCrossRefStyle () - Makro auf, um den Stil "Intensive Referenz" auf alle Querverweise anzuwenden.

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
quelle