有没有办法为超链接应用“自动更新”样式?
我相信,这个问题并非无足轻重。
当您通常点击超链接时,它会将其颜色更改为紫色。接下来,如果您保存,关闭然后重新打开文档,该链接将更新回蓝色。这是Word的默认行为,不需要使用任何宏。
我正在尝试使用VBA复制此行为。这是代码:
Sub Test1()
Selection.Range.Hyperlinks(1).Range.Fields(1).Result.Style = Word.WdBuiltinStyle.wdStyleHyperlinkFollowed
End Sub
要使其工作,只需将插入符号放入链接,运行宏,然后查看结果:
这样可以正常工作,但在保存,关闭然后重新打开文档后,这些访问过的链接将不会自动更新。请参见下图中的差异。正常打开“Google”链接,使用鼠标Ctrl键单击;使用宏打开了“StackOverflow”链接:
正如我已经说过的,我想让我的VBA打开的链接(StackOverflow)也可以自动更新(如谷歌)。
是的,我理解,有一个解决方法 - 只需创建另一个宏,每次打开文档时都会启动它,并将所有紫色超链接更改回蓝色。但是,这只是解决方法,我不喜欢它。使用它,我们使用从“永久紫罗兰”到“永久蓝”的转换,而不是使用“临时紫”(这意味着,可以自动更新而无需任何额外的努力)。
希望一切都清楚。提前谢谢。
更新(在已发布多个答案后添加)。
是的,我明白,这会奏效:
Sub Test1()
On Error Resume Next 'To avoid an error in case if the link isn't reachable
Selection.Hyperlinks(1).Follow
End Sub
但是我想要跟随模拟,而不是真正打开浏览器中的链接。这就是为什么,我不能使用Selection.Hyperlinks(1).Follow
。
答案 0 :(得分:1)
您需要删除该行,该链接会在关注后更改,并在重新打开文档后再更改。
Selection.Range.Hyperlinks(1).Range.Fields(1).Result.Style = Word.WdBuiltinStyle.wdStyleHyperlinkFollowed
答案 1 :(得分:1)
这对我来说是
Sub resetHyperlinks()
Dim hLink As Hyperlink
For Each hLink In ActiveDocument.Hyperlinks
hLink.Address = hLink.Address ' this works
' hLink.ScreenTip = hLink.ScreenTip ' this works also
Next hLink
End Sub
答案 2 :(得分:1)
您无需使用代码更改样式以使链接变为紫色。只需使用Follow
方法即可。这将点击该链接并将其变为紫色,然后在再次打开文档时将其重置为蓝色。
Sub Test1()
Selection.Range.Hyperlinks(1).Follow
End Sub
答案 3 :(得分:1)
您可以使用在启动时运行的VBA代码重置链接样式,即Document_Open()
routine中ThisDocument
VBA module的一部分。
Hyperlink
class没有任何.Visited
属性或任何相关内容(即您甚至无法查看是否已访问过),因此{{1}旁边没有别的办法也可以打开链接。
这个证据表明 Word没有,并且没有设计,有任何专门的工具来切换除.Follow()
以外的链接状态。这意味着,任何方式你发现碰巧有所期望的效果一定会成为你所谓的"解决方法"。
答案 4 :(得分:1)
后续超链接的“临时”颜色是内置超链接字符样式的嵌入(而非直接可访问)功能。它不是通过普通用户界面的样式工具,也不是通过对象模型公开的。
您可以使用Word中文档窗口中的“显示格式”窗格(Shift + F1)轻松比较两个选项之间的所有格式。
如果您将常用的超链接与受其代码段影响的超链接进行比较,您会看到后面的超链接仍然具有超链接样式,而您的模拟关注更改了样式的第二个超链接。
如果您比较一个从未跟随的超链接和一个正常关注的超链接,Word会将其格式标识为 完全 相同。 Word不承认格式化的任何方面(样式,字体颜色等)已更改。
您使用的Word.WdBuiltinStyle.wdStyleHyperlinkFollowed
似乎明确存在以解决这一差距(这有点令人失望)。
我建议您使用现有方法,然后在文档的Before Save
和Before Close
事件触发的过程中还原样式。使用这些事件将阻止后续样式进行保存,从而避免因某人在未启用宏的情况下打开文档而导致的问题。
答案 5 :(得分:0)
Option Explicit
Sub test()
Dim HL As Hyperlink
For Each HL In Sheet1.Hyperlinks
HL.Range.Style.Font.Color = vbBlue
Next
End Sub
如果不调用它,你不能简单地制作任何你想要的颜色。正如其他人在上面所说的那样,我认为这将是一种解决方法,因为它不是预期的功能。