Word VBA 将高亮转为阴影 (1) 如何将代码限制在选定范围内? (2) 有没有比Char by Character+循环每种颜色更高效的Code?

问题描述 投票:0回答:1

标题说明了一切:可以将高亮转换为底纹(学习自“通过 VBA 将文本从高亮转换为底纹”) https://www.datanumen.com/blogs/convert-texts-shaded-highlighted-vice-versa-word-document/) 想要应用于选择而不是整个文档。 对于 16 个基色高光中的每一个,逐个字符执行也需要很长时间。 程序员可能知道更有效的例程。

Sub ConvertHighlightToShade()
  Dim objCharacterRange As Range
  For Each objCharacterRange In ActiveDocument.Characters
        If objCharacterRange.HighlightColorIndex = wdDarkBlue Then
      objCharacterRange.HighlightColorIndex = wdNoHighlight
      objCharacterRange.Shading.BackgroundPatternColor = RGB(0, 0, 128) 'DarkBlue
           Debug.Print "1of16", "Conv Hlgt t Shad.1of16", "#000080", "DarkBlue"
    End If
  Next objCharacterRange
  For Each objCharacterRange In ActiveDocument.Characters
        If objCharacterRange.HighlightColorIndex = wdGreen Then
      objCharacterRange.HighlightColorIndex = wdNoHighlight
      objCharacterRange.Shading.BackgroundPatternColor = RGB(0, 128, 0) 'Green
           Debug.Print "4of16", "Conv Hlgt t Shad.4of16", "#008000", "Green"
    End If
  Next objCharacterRange
  End Sub

我尝试使用以下模型来隔离选择区域,但变化失败。
https://www.bettersolutions.com/word/characters/vba-range-object.htm 重新定义范围对象 您可以使用 SetRange 方法重新定义现有的 Range 对象 以下示例将范围对象定义为等于当前选择,然后重新定义它以引用当前选择加上接下来的 10 个字符。 调暗 objRange 作为范围 设置 objRange = ActiveWindow.Selection.Range objRange.SetRange(Start:=objRange.Start, _ 结束:=objRange.End+10)

我注意到使用范围的优点出现在 https://bettersolutions.com/word/characters/vba-range-vs-selection.htm

vba ms-word highlight maven-shade-plugin
1个回答
0
投票

无需逐个字符地爬行文档。 Word 的内置查找功能将为您找到突出显示的文本。

下面的例程用相同颜色的阴影替换高光。

Sub ConvertHighlightToShade()
    Dim findRange As Range: Set findRange = Selection.Range
    With findRange
        With .Find
            .ClearFormatting
            .Highlight = True
            .Forward = True
            .Wrap = wdFindStop
        End With
        Do While .Find.Execute
            .Shading.BackgroundPatternColorIndex = .HighlightColorIndex
            .HighlightColorIndex = wdNoHighlight
            .Collapse wdCollapseEnd
        Loop
    End With
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.