2017-09-18 1 views
0

Je souhaite créer une liste de termes en extrayant une phrase qui contient un mot en gras dans un document Word. Est-ce possible? Je sais comment rechercher des mots en gras. Mais je ne sais pas comment sélectionner la phrase qui a le mot en gras.Est-il possible d'extraire une phrase d'un document Word avec un mot en gras?

J'ai ajouté du code pour copier et coller le texte trouvé dans un nouveau document. Cela fonctionnait bien mais maintenant ce n'est pas le cas. Je ne sais pas pourquoi. Voilà ce que j'ai maintenant:

Sub Extract_terms() 
    With Selection.Find 
     .Format = True 
     .Font.Bold = True 
    End With 
    Do While Selection.Find.Execute 
     Selection.Expand wdSentence 
     Selection.Font.Bold = False 'added to prevent infinite loop 
     Selection.Copy 
     Windows("list.docx").Activate 
     Selection.PasteAndFormat (wdFormatOriginalFormatting) 
     Selection.TypeParagraph 
     Windows("Chapter 3.docx [Compatibility Mode]").Activate 
     Selection.MoveLeft Unit:=wdCharacter, Count:=1  
    Loop 
End Sub 
+0

Je remarque que lorsque la ligne Do While Selection.Find.Execute s'exécute, le curseur se fige au lieu de trouver le texte en gras. – aoswald

Répondre

0

Vous devez utiliser le wdSentence comme une unité pour Selection.Expand. Voici un exemple:

Sub test() 
    With Selection.Find 
     .Format = True 
     .Font.Bold = True 
    End With 

    Do While Selection.Find.Execute 
     Selection.Expand wdSentence 
     Selection.Font.Bold = False 'added to prevent infinite loop 
    Loop 
End Sub 

Here est une liste de toutes les unités possibles que vous pouvez utiliser pour l'énumération wdUnits.

+0

cela a bien fonctionné - mais maintenant ça ne marche pas. J'ai ajouté quelques lignes pour copier la phrase sélectionnée à un autre docuemnt et cela fonctionnait bien mais maintenant ce n'est pas le cas. Je ne sais pas comment je l'ai cassé mais ça ne marche pas. C'est ce que j'ai maintenant .: – aoswald

+0

Je devrais deviner que c'est lié à certains paramètres de recherche, vous devrez poser une nouvelle question et poster quelques images du texte que vous cherchez plus que probablement pour obtenir une bonne réponse. Bonne chance – GibralterTop

+0

Une fois que les paramètres 'Selection.Find' sont définis, ils sont conservés pendant toute la durée de l'application (ils peuvent aller au-delà de IDK), il est donc sage de faire comme @mohammedaldefrawy et essayer de tout réinitialiser, bien que je dira que ce n'est pas tout ce dont vous avez besoin pour réinitialiser. – GibralterTop

0

Je pense un moyen facile est d'enregistrer une macro de cette recherche contient les critères demandés, puis prendre le code à votre programme et de le modifier comme vous le souhaitez.

ex:

Selection.Find.ClearFormatting 
Selection.Find.Font.Bold = True 
With Selection.Find 
    .Text = "YOUR WORD" 
    .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 
+0

OP dit qu'il sait déjà comment trouver le texte en gras. – GibralterTop