2017-09-18 47 views
0

我想通过提取包含Word文档中粗体字的句子来构建术语列表。那可能吗?我知道如何以粗体查找单词。但我不知道如何选择有粗体字的句子。是否可以从包含粗体字的Word文档中提取句子?

我添加了一些代码来将找到的文本复制并粘贴到新文档中。它工作正常,但现在不是。我不知道为什么。这是我现在有:

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

我注意到,当行Do While Selection.Find.Execute运行时,光标停止,而不是找到粗体文本。 – aoswald

回答

0

你必须使用wdSentence为单位的Selection.Expand。这里有一个例子:

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是你可以使用的wdUnits枚举可能的单位列表。

+0

这工作得很好 - 但现在它不工作。我添加了一些行来将选定的句子复制到另一个docuemnt,它工作正常,但现在不行。不知道我是如何打破它,但它不工作。这是我现在拥有。: – aoswald

+0

我不得不猜测它与某些查找设置有关,你将不得不问一个新的问题,并张贴你正在搜索的文本的一些图像更有可能得到一个很好的答案。祝好运 – GibralterTop

+0

一旦'Selection.Find'设置被设置,它们会在整个应用程序的持续时间内运行(它们可能会超越但IDK),所以作为@mohammedaldefrawy所做的尝试并重置所有内容是明智的,尽管我会说这不是你需要重置的所有东西。 – GibralterTop

0

我想一个简单的方法是,以记录搜索的宏包含想要的条件,然后把代码添加到您的程序,并修改它,只要你想。

例如:

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说他已经知道如何找到粗体文本。 – GibralterTop

相关问题