确定超链接中第一个字符的突出显示颜色
Determine the Highlight color of the first character in a hyperlink
我有一个突出显示的超链接(例如 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也是returns9999999。
如何获取超链接第一个字符的高亮颜色值?
问题是当您以这种方式查询时,Range 的第一个字符位于 "between"。一种查看方式是
- 显示样式窗格(在主页选项卡中,单击 "Styles" 组的对话框启动器)
- 单击第三个字符周围的超链接并查看样式名称
- 使用向左箭头直到插入点(光标)刚好位于超链接中第一个字符的左侧
当我这样做时,我看到样式名称从 "Hyperlink" 切换到 "Normal" - IOW Word 正在查看到那时为止有效的内容,而不是接下来的内容。 (我很惊讶!)。如果我随后按住 Shift 键并按右箭头键,我会看到超链接样式 selected,正如我所期望的那样。
对于超链接,这些是字段代码这一事实使得处理第一个和最后一个字符变得棘手,因为 "selecting" 它们 在代码 中选择了 entire 字段 - 这就是为什么你得到 999999(= 未定义 - 不止一种颜色)。
我只能找到一种解决此问题的方法:像用户一样使用 SendKeys
到 select 第一个和最后一个字符(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
我有一个突出显示的超链接(例如 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也是returns9999999。
如何获取超链接第一个字符的高亮颜色值?
问题是当您以这种方式查询时,Range 的第一个字符位于 "between"。一种查看方式是
- 显示样式窗格(在主页选项卡中,单击 "Styles" 组的对话框启动器)
- 单击第三个字符周围的超链接并查看样式名称
- 使用向左箭头直到插入点(光标)刚好位于超链接中第一个字符的左侧
当我这样做时,我看到样式名称从 "Hyperlink" 切换到 "Normal" - IOW Word 正在查看到那时为止有效的内容,而不是接下来的内容。 (我很惊讶!)。如果我随后按住 Shift 键并按右箭头键,我会看到超链接样式 selected,正如我所期望的那样。
对于超链接,这些是字段代码这一事实使得处理第一个和最后一个字符变得棘手,因为 "selecting" 它们 在代码 中选择了 entire 字段 - 这就是为什么你得到 999999(= 未定义 - 不止一种颜色)。
我只能找到一种解决此问题的方法:像用户一样使用 SendKeys
到 select 第一个和最后一个字符(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