【问题标题】:Determine the Highlight color of the first character in a hyperlink确定超链接中第一个字符的突出显示颜色
【发布时间】:2018-09-04 12:46:02
【问题描述】:

我有一个超链接(例如www.google.com)被突出显示,可能有不同的颜色。
我想确定超链接中每个字符的突出显示颜色。

我用过: r.Hyperlinks(i).Range.Characters(j).HighlightColorIndex
对于超链接的第一个 (j=1) 字符(在本例中为 w),无论突出显示颜色如何,我都会得到 HighlightColorIndex=9999999。对于所有剩余的字符 (ww.google.com),该代码有效。

我也尝试了r.Hyperlinks(i).Range.Characters.First.HighlightColorIndex,但对于 j=1,它也返回 9999999。

如何获取超链接中第一个字符的高亮颜色值?

【问题讨论】:

    标签: vba ms-word highlight


    【解决方案1】:

    问题在于,当您以这种方式查询 Range 时,Range 的第一个字符位于“between”。一种查看方式是

    • 显示样式窗格(在主页选项卡中,单击“样式”组的对话框启动器)
    • 单击第三个字符周围的超链接并查看样式名称
    • 使用向左箭头直到插入点(光标)刚好位于超链接中第一个字符的左侧

    当我这样做时,我看到样式名称从“超链接”切换到“普通” - IOW Word 正在查看到那时有效的内容,而不是接下来的内容。 (我很惊讶!)。如果我然后按住 Shift 并按右箭头,我会看到选择的超链接样式,正如我所期望的那样。

    使用超链接,这些是域代码这一事实使得处理第一个和最后一个字符变得很棘手,因为“选择”它们在代码中会拾取整个域 -这就是为什么您会得到 999999(= 未定义 - 不止一种颜色)。

    我只能找到一种解决方法:使用SendKeys 像用户一样选择第一个和最后一个字符(Shift+右箭头)。我不喜欢它;我担心它不会很可靠。如果您从 VBA 编辑器运行代码,该代码将不会正常工作 - 它必须从应该执行 SendKeys 的文档界面运行(例如,QAT 中的按钮)。以下对我有用:

    Sub HyperlinkHighlight()
        Dim R As word.Range, c As word.Range
        Dim doc As word.Document
        Dim f As word.Field
        Dim i As Long, j As Long
    
        Set doc = ActiveDocument
        Set R = doc.content
    
        For i = 1 To R.Hyperlinks.Count
          R.Hyperlinks(i).Range.Characters(1).Select
          Selection.Collapse wdCollapseStart
          SendKeys "+({Right})", True
          DoEvents
          Debug.Print Selection.Range.HighlightColorIndex
    
          For j = 2 To R.Hyperlinks(1).Range.Characters.Count - 1
            Debug.Print R.Hyperlinks(i).Range.Characters(j).HighlightColorIndex
          Next j
    
          R.Hyperlinks(i).Range.Characters(R.Hyperlinks(i).Range.Characters.Count - 1).Select
          Selection.Collapse wdCollapseEnd
          SendKeys "+({Right})", True
          DoEvents
          Debug.Print Selection.Range.HighlightColorIndex
        Next i
    End Sub
    

    【讨论】:

    • 辛迪,非常感谢。您的解决方案很有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-21
    • 2011-09-01
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多