可自动更新的链接

时间:2017-08-29 21:07:22

标签: vba ms-word ms-office word-vba

有没有办法为超链接应用“自动更新”样式?

我相信,这个问题并非无足轻重。

当您通常点击超链接时,它会将其颜色更改为紫色。接下来,如果您保存,关闭然后重新打开文档,该链接将更新回蓝色。这是Word的默认行为,不需要使用任何宏。

我正在尝试使用VBA复制此行为。这是代码:

Sub Test1()
    Selection.Range.Hyperlinks(1).Range.Fields(1).Result.Style = Word.WdBuiltinStyle.wdStyleHyperlinkFollowed
End Sub

要使其工作,只需将插入符号放入链接,运行宏,然后查看结果:

enter image description here

这样可以正常工作,但在保存,关闭然后重新打开文档后,这些访问过的链接将不会自动更新。请参见下图中的差异。正常打开“Google”链接,使用鼠标Ctrl键单击;使用宏打开了“StackOverflow”链接:

enter image description here

正如我已经说过的,我想让我的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

6 个答案:

答案 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() routineThisDocument VBA module的一部分。

Hyperlink class没有任何.Visited属性或任何相关内容(即您甚至无法查看是否已访问过),因此{{1}旁边没有别的办法也可以打开链接。

  • 您基本上试图伪造文档提供的有关其状态的信息:在实际上没有链接时显示访问。
  • 该课程甚至不提供属性这一事实意味着Word的设计师不会将访问状态视为编辑器功能的一部分(即它实际上并没有就程序的工作而言是存在的。)

这个证据表明 Word没有,并且没有设计,有任何专门的工具来切换除.Follow()以外的链接状态。这意味着,任何方式你发现碰巧有所期望的效果一定会成为你所谓的"解决方法"。

答案 4 :(得分:1)

后续超链接的“临时”颜色是内置超链接字符样式的嵌入(而非直接可访问)功能。它不是通过普通用户界面的样式工具,也不是通过对象模型公开的。

您可以使用Word中文档窗口中的“显示格式”窗格(Shift + F1)轻松比较两个选项之间的所有格式。

如果您将常用的超链接与受其代码段影响的超链接进行比较,您会看到后面的超链接仍然具有超链接样式,而您的模拟关注更改了样式的第二个超链接。

如果您比较一个从未跟随的超链接和一个正常关注的超链接,Word会将其格式标识为 完全 相同。 Word不承认格式化的任何方面(样式,字体颜色等)已更改。

您使用的Word.WdBuiltinStyle.wdStyleHyperlinkFollowed似乎明确存在以解决这一差距(这有点令人失望)。

我建议您使用现有方法,然后在文档的Before SaveBefore 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

如果不调用它,你不能简单地制作任何你想要的颜色。正如其他人在上面所说的那样,我认为这将是一种解决方法,因为它不是预期的功能。