2008-10-23 11 views
3

J'ai quelques fichiers .doc simples que j'ai fait dans Word 2007 où j'ai changé la couleur du texte et utilisé des surbrillances pour comparer des textes similaires. Ce que je voudrais faire est de changer toutes les instances de texte vert ou de surlignage gris pour différentes couleurs respectives pour chacun.Comment modifier le texte en surbrillance dans une couleur différente dans MS Word?

Je suis sûr qu'il existe un moyen simple de faire cela avec VBA mais tout autre type de réponse est également le bienvenu.

EDIT: Bien que j'apprécie les réponses, celle qui me permet de conserver les fichiers .doc en tant que .docs est préférée.

Répondre

1

Vous pouvez toujours enregistrer le fichier au format HTML et y remplacer les couleurs. La couleur est représentée par

<span style='color:red'>... 

et mettre en évidence est

<span style='background:yellow;mso-highlight:yellow'>... 

devrait être facile à manipuler si votre document est assez simple.

Modifier qui répond à la modification dans la question: Une fois que vous avez terminé, rouvrez le fichier et enregistrez le fichier au format .doc.

+0

En fait c'est un peu plus compliqué car la paire mso-highlight: key-value peut être cachée parmi d'autres paires (codage, langage, choix de police, etc.). Mon conseil est de rechercher mso-highlight: quelque chose quelque part dans un attribut de style d'un élément span. – yannis

2

Ce n'est pas à partir de 2007, mais l'idée devrait convenir. Cet exemple modifie toute mise en évidence en cours pour la nouvelle surbrillance par défaut (wdBrightGreen) et tout texte vert en rouge.

Sub ChangeColor 
Options.DefaultHighlightColorIndex = wdBrightGreen 

    Selection.Find.ClearFormatting 
    Selection.Find.Highlight = True 
    Selection.Find.Replacement.ClearFormatting 
    Selection.Find.Replacement.Highlight = True 
    Selection.Find.Execute Replace:=wdReplaceAll 

    Selection.Find.ClearFormatting 
    Selection.Find.Font.Color = wdColorBrightGreen 
    Selection.Find.Replacement.ClearFormatting 
    Selection.Find.Replacement.Font.Color = wdColorRed 
    With Selection.Find 
     .Text = "" 
     .Replacement.Text = "" 
     .Forward = True 
     .Wrap = wdFindContinue 
    End With 
    Selection.Find.Execute Replace:=wdReplaceAll 
End Sub 
0

Cela devrait fonctionner à votre objectif:

Sub RehiliteAll() 

    Const YOUR_REQUIRED_COLOR_IDX As Integer = 6 'RED' 
    Dim doc As Range 
    Set doc = ActiveDocument.Range 

    With doc.Find 
     .ClearFormatting 'resets default search options' 
     .Highlight = True 
     .Wrap = wdFindStop 

     While .Execute 

      If doc.HighlightColorIndex = YOUR_REQUIRED_COLOR_IDX Then 
       doc.Select 
       MsgBox doc.HighlightColorIndex 
       'Do stuff here' 
      End If 

      'doc has been reassigned to the matching' 
      'range; we do this so word keeps searching' 
      'forward' 
      doc.Collapse wdCollapseEnd 
     Wend 
    End With 

    Set doc = Nothing 
End Sub 

'I am closing comment quotes so that SO formatting' 
'does not get messed up too much.' 
1

Je pensais que l'on pourrait mettre en évidence une partie du texte en couleur, puis choisissez l'option « sélectionner le texte avec mise en forme similaire » de l'option de menu de sélection de texte sur l'onglet Accueil. Ensuite, sélectionnez simplement la couleur du texte requise. Espérons que cela fonctionne.

Questions connexes