0

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

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

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 

这是文档的屏幕截图
在此处输入图像描述 它只是检测到红圈所示行中的第一个图。
我发现代码会一遍又一遍地从插入点的当前位置检测 Figure 的第一个实例。
在检测到其中一个之后,如何搜索 Figure 的下一个实例?
将 wdFindStop 更改为 wdFindContinue 不起作用;两者都产生相同的结果。

4

3 回答 3

1

试试下面的宏;它将处理以“图片”或“图”开头的段落,并对其应用 Word 的“强”样式(粗体)。

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
于 2018-10-10T21:41:58.570 回答
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
于 2014-01-17T01:02:34.937 回答
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
于 2013-05-20T20:57:07.427 回答