Excel VBA添加超链接时地址自动URL编码问题求助
VBA创建内部超链接时地址被URL编码的原因解析
我来帮你拆解这个问题——你遇到的编码现象其实是Excel VBA处理超链接时的默认行为,完全是正常的,咱们慢慢说:
首先先把你的代码规整一下,方便查看:
Dim HyperlinksAdd as String HyperlinksAdd = "[MyWorkBook.xlsm]thissheet!C1" ActiveWorkbook.Worksheets("linksheet").Hyperlinks.Add _ Anchor:=ActiveWorkbook.Worksheets("linksheet").Cells(3, 3), _ Address:=HyperlinksAdd, _ TextToDisplay:="Link to thissheet cell c1"
为什么会出现URL编码?
- URL规范的要求:Excel的
Hyperlinks.Add方法在处理Address参数时,会把它当作标准URL路径来解析。而方括号[和]不属于URL标准里的"安全字符",所以Excel会自动按照URL编码规则把它们转义成%5B和%5D(这两个是[和]的ASCII码十六进制表示)。 - 内部链接的处理逻辑:哪怕你是指向同一个工作簿里的单元格,只要你把完整路径放在
Address参数里,Excel就会启动URL编码机制——因为这个参数原本是为外部URL设计的。
不过放心,这种编码完全不影响超链接的功能——点击的时候Excel会自动解码,正常跳转到目标单元格,只是右键查看属性时显示的是编码后的字符串而已。
怎么让地址显示更清晰?
如果你希望右键查看时能看到直观的地址,不用编码后的字符串,可以改用SubAddress参数来指定内部单元格,把Address留空:
Dim targetSheet As Worksheet Set targetSheet = ActiveWorkbook.Worksheets("thissheet") ActiveWorkbook.Worksheets("linksheet").Hyperlinks.Add _ Anchor:=ActiveWorkbook.Worksheets("linksheet").Cells(3, 3), _ Address:="", _ SubAddress:=targetSheet.Name & "!C1", _ TextToDisplay:="Link to thissheet cell c1"
这样设置后,链接属性里的地址就会显示成thissheet!C1,清晰明了,也不会有编码问题。
内容的提问来源于stack exchange,提问作者PhoenixRising2015
相关产品推荐
相关产品推荐

