在Word中选择一个段落并更改它的样式

时间:2013-05-20 03:11:53

标签: vba ms-word word-vba

我需要查找Word文档中的一行是否以单词Picture开头,如果是,则将该行的样式更改为内置样式。我相信在返回键之后开始的行被Word解释为新段落,并且该段落的末尾由另一个返回键表示。

我有一个句子段落,如果它以单词Picture开头,我必须改变它的样式。如何搜索文档的每一行以查看它是否以单词Picture开头?
- 编辑 -
我已将图片改为图
我试图找到图形的所有实例,然后将包含图形的线转换为粗体(粗体代码将被更改样式的代码替换)。现在我已经跳过了所有的错误检查,并试图让它找到图的所有实例,然后将句子字符转换为粗体,从图中出现的单词开始。

Sub Macro1() 
' ' Macro1 Macro ' '  
     Selection.Find.ClearFormatting  
     Do  
     With Selection.Find  
         .Text = "figure"  
         .Forward = True  
         .Wrap = wdFindStop  
     End With  
     Selection.Find.Execute  
     Selection.EndKey Unit:=wdLine, Extend:=wdExtend  
     Selection.Font.Bold = wdToggle  
     Loop 
End Sub 

这是文档的截图 enter image description here 它只是检测红色圆圈中显示的第一个图形 我发现代码一遍又一遍地从插入点的当前位置检测到图的第一个实例 在检测到其中一个后,如何搜索下一个图实例? 将wdFindStop更改为wdFindContinue不起作用;两者都产生相同的结果。

3 个答案:

答案 0 :(得分:0)

我对您的代码做了一些修改,从头到尾搜索。我也改变了你选择整个句子的方式,将其标记为粗体。

Sub Macro1()

     Selection.Find.ClearFormatting

     With Selection.Find
         .Text = "figure"
         .Forward = True
         .Wrap = wdFindStop
     End With

'changed the loop
     Do While Selection.Find.Execute
'changed the way we select sentence
        Selection.Expand wdSentence
        Selection.Font.Bold = True
        Selection.Collapse wdCollapseEnd
     Loop
End Sub

答案 1 :(得分:0)

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting

With Selection.Find
    .Text = "Picture"
    .Replacement.Text = "Figure"
    .Forward = True
    .Wrap = wdFindContinue
    .Format = True
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Selection.Find.Execute
Selection.Find.Execute Replace:=wdReplaceAll

答案 2 :(得分:0)

尝试以下宏;它将处理以'Picture'或'Figure'开头的段落,并对其应用Word的'Strong'样式(粗体)。

Sub Demo()
Application.ScreenUpdating = False
With ActiveDocument.Range
  With .Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = "^13[FP]i[gct]{1,2]ure [0-9]*^13"
    .Replacement.Text = ""
    .Forward = True
    .Format = True
    .Wrap = wdFindStop
    .MatchWildcards = True
    .Execute
  End With
  Do While .Find.Found = True
    .Start = .Start + 1
    .Style = "Strong"
    .Collapse (wdCollapseEnd)
    .Find.Execute
  Loop
End With
Application.ScreenUpdating = True
End Sub