Rien de plus à ajouter, je voudrais changer le style de toutes références croisées J'ai dans un document Word 2007 à la fois. Mais je n'ai aucune idée de la façon de le faire. Comment cela peut-il être fait?
Certains types de référence croisés sont automatiquement formatés avec le style "référence intense", mais la plupart sont formatés comme un texte "normal".
Pour appliquer le style "référence intense" au texte de la référence croisée:
Pour changer l'apparence de tout texte d'un style donné:
Pour appliquer un style à toutes les références croisées à la fois:
^19 REF
Voir Cette page Pour plus d'informations sur les codes spéciaux à rechercher et à remplacer.
Voici une macro qui ajoutera le commutateur \* mergeformat
à chacun des champs. Cet interrupteur est nécessaire pour maintenir la mise en forme d'être perdue si vous faites une mise à jour sur le terrain. Vous pouvez affecter la macro à une touche de frappe et passera parmi les champs une à la fois pour chaque fois que vous appuyez sur la touche de frappe. Vous pouvez également modifier la macro pour boucler sur tout le document pour automatiser le processus.
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
Utilisez la macro suivante pour ajouter Charformat à toutes les références croisées. Cette macro ajoute la chaîne sur le champ uniquement si ce n'est pas déjà là.
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
Utilisez cette macro pour formater toutes les références croisées avec le style "référence subtil" (assurez-vous d'avoir un tel style et que les codes de champ sont affichés):
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
Presse Alt+F9 masquer les codes de champ
modification de la macro téléchargée par le cyborg, nous pouvons facilement automatiser montrant et masquant les codes de champ. Pour que chaque fois que nous souhaitons mettre à jour, nous n'avons pas à utiliser des codes de champ à basculer. J'ai utilisé le code suivant pour ajouter un code de code de champ.
ActiveDocument.ActiveWindow.View.ShowFieldCodes = False
La macro complète est la suivante:
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
C'est la première fois que j'utilise des macros pour accélérer mon travail en mot. Merci Cyborg pour une macro aussi utile.
Manière rapide et efficace:
Cette macro ouvre la boîte de dialogue de référence croisée pour insérer une référence croisée à la position du curseur actuel.
Lorsque vous fermez la boîte de dialogue XREF après avoir inséré la référence, la macro reprend pour formater la référence croisée insérée à 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
Grâce à Graham Skan à ExpertSExchange pour savoir comment ouvrir le dialogue XREF.