VBA:Can';t更改Word文档中超链接的子地址属性

VBA:Can';t更改Word文档中超链接的子地址属性,vba,ms-word,Vba,Ms Word,我正在尝试修复Word文档中的超链接。我需要更改某些超链接的SubAddress属性。为了这个目的,我在他们之间循环。不幸的是,当我试图更改任何子地址时,我得到一个非常奇怪的错误,即对象“hyperlink”的方法“subaddress”失败。显然,这是因为VBA本身有问题 Sub FixHyperlinks() ' ' FixHyperlinks Macro ' ' ActiveDocument.Hyperlinks(1).SubAddress = "some new subaddress"

我正在尝试修复Word文档中的超链接。我需要更改某些超链接的SubAddress属性。为了这个目的,我在他们之间循环。不幸的是,当我试图更改任何子地址时,我得到一个非常奇怪的错误,即对象“hyperlink”的
方法“subaddress”失败。显然,这是因为VBA本身有问题

Sub FixHyperlinks()
'
' FixHyperlinks Macro
'
'
ActiveDocument.Hyperlinks(1).SubAddress = "some new subaddress"
End Sub
我是2016年Office Professional Plus的忠实拥趸。有人能告诉我这对你有用吗

这很容易测试。只需创建一个新文档,键入两行单字。将第二行样式设置为“标题1”。转到第一行,点击CTRK+K(创建超链接)将其指向“本文档中的一个位置”,选择您刚刚创建的标题。不要输入任何地址。现在转到宏,粘贴上面的内容,并在插入符号位于代码中时按F5


当用鼠标单击超链接时,超链接工作正常(第一行超链接将带您到第二行标题)。

虽然hyperlink.SubAddress属性应该是读/写字符串,但写入它失败-即使在Word 2010中也是如此。尝试以下几点:

Dim Rng As Range, StrAddr As String, StrTxt As String
With ActiveDocument
  With .Hyperlinks(1)
    Set Rng = .Range
    StrAddr = .Address
    StrTxt = .TextToDisplay
    .Delete
  End With
  .Hyperlinks.Add Anchor:=Rng, Address:=StrAddr, SubAddress:="new_sub_address"
End With

这确实是我最终的选择。我删除并重新创建了超链接。谢谢!:)。您是如何发现该属性是只读的?仅仅通过尝试或是否有一些VBA的“秘密”文档或某种方法来检查所涉及的DLL(和其他库)的功能?@Axonn我不是说它是只读的,正如VBA文档所说的那样;我所说的是,即使是在Word 2010中,给它写信也会导致错误。