关于 vba:作用于 Microsoft Word 中的多个 Selection.Range 对象

Acting on multiple Selection.Range objects in Microsoft Word

我试图用引号将页面上所有选定的文本括起来,但是当我运行代码时,它只会影响页面上的最后一个选择。我的代码还取消了所有选定的文本,并且该部分工作正常。我的代码如下:

1
2
3
4
With Selection.Range
    Selection.Range.Bold = wdToggle
    .Text = Chr(34) & .Text & Chr(34)
End With


试试:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sub Demo()
Application.ScreenUpdating = False
Selection.Font.Shading.BackgroundPatternColor = wdColorAqua
With ActiveDocument.Range
  With .Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text =""
    .Replacement.Text =""
    .Font.Shading.BackgroundPatternColor = wdColorAqua
    .Format = True
    .Forward = True
    .Wrap = wdFindStop
    .Execute
  End With
  Do While .Find.Found
    .Font.Shading.BackgroundPatternColor = wdColorAutomatic
    If .Characters.Last = vbCr Then .End = .End - 1
    .InsertBefore Chr(147) 'Chr(34)
    .InsertAfter Chr(148) 'Chr(34)
    .Collapse wdCollapseEnd
    .Find.Execute
  Loop
End With
Application.ScreenUpdating = True
End Sub

注意:我使用了智能引号,但如果您愿意,也可以使用直引号。


你可以这样做:https://stackoverflow.com/a/46106637/3451115

仅当您没有在整个文档中使用高亮显示时才有效。这个想法来自这里:https://stackoverflow.com/a/36413118/3451115

简而言之,您使用高亮作为临时标记来搜索和后期处理(为了更好的表达)。查找亮点可让您循环浏览所选内容。