Excel指向具有id或命名锚点的网页位置的超链接

时间:2013-07-15 14:00:19

标签: excel vba excel-vba hyperlink

在Excel中,我可以创建指向网页的超链接。但是,如果URL包含#字符,则Excel始终将散列符号转换为空格连字符空格,以便链接不再起作用。网址http://www.example.com/page#location变为http://www.example.com/page%20-%20location

我尝试过三种方式

  1. 手动,右键单击一个单元格,单击“超链接”并在地址栏中键入URL

  2. 以编程方式提供完整的网址:

    Worksheets(1).Hyperlinks.Add Address:="http://www.example.com/page#location"

  3. 以编程方式将位置作为“子地址”:

    Worksheets(1).Hyperlinks.Add Address:="http://www.example.com/page", SubAddress:="location"

  4. 这三个都给出了同样的问题。是否可以创建指向特定位置(id或命名锚点)的链接,而不仅仅是网页?我将不胜感激任何帮助。

    注意:代码示例不完整;为清楚起见,我省略了参数Anchor和TextToDisplay。

    Excel版本:2010(14.0.6126.5003)SP1

8 个答案:

答案 0 :(得分:5)

它似乎是一个浏览器问题,而不是Excel问题。从Google Chrome切换到Internet Explorer解决了这个问题。

感谢大家的建议...只是说你没有发现同样的问题是促使我去其他地方的原因。

答案 1 :(得分:3)

这不是浏览器问题。 MS Office应用程序正在修改URL,其中#替换为“ - ”(%20是空格)。

Microsoft themselves承认这个恼人的问题存在。引用该页面:

  

当您创建超链接的文件名包含井号(#)时,可能会出现这些问题。

     

注意:井号是在文件名中使用的有效字符,但在Office文档的超链接中不被接受。

他们唯一的解决方法是删除违规#或复制并粘贴文档中的网址...完全荒谬,考虑到大多数人使用#的原因是为了让更容易用户查找内容。

请求Microsoft通过在此投票改进此行为:https://office365.uservoice.com/forums/264636-general/suggestions/32273917-stop-mangling-urls-containing-a-so-we-can-link-t

答案 2 :(得分:1)

我们发现的最佳解决方案是将Internet Explorer重置为默认浏览器,而无需手动更改注册表项。这会重置URL,协议和扩展关联并解决问题。

一旦你这样做,即使将默认浏览器更改为Firefox并将其更改回IE也不会再次破坏它。

这个解决方案更清洁"而不是在注册表中玩,并已作为我们公司的官方解决方案登录。

答案 3 :(得分:0)

只需键入URL并按Enter即可在单元格中创建超链接。如果它具有

之类的内容,Excel会将其识别为URL
  

“com”

和/或

  

“HTTP://”

我尝试过你的问题并没有得到它。也许您的网址存在其他问题。您可能希望发布一个更类似的URL到您实际使用的URL(相同的字符类型)我也有excel 2010。

答案 4 :(得分:0)

通过使用%23代替#(hashtag | pound符号),我能够解决这个问题。我的网址现在可以在Excel 2013中使用。' hovertext'在URL中显示#符号,但编辑链接会显示%23。

http://www.example.com/page#location不起作用

http://www.example.com/page%23location有效

答案 5 :(得分:0)

我有一个同事在Word 2010而不是Excel中遇到这个问题(包括%20-%20错误)。

解决了以下方式:

在Internet Explorer中:

  • 互联网选项
  • “计划”标签
  • HTML编辑器:确保这不是空白

答案 6 :(得分:0)

不幸的是,在Excel中,我仍遇到安全URL编码超链接的问题。

它们可以工作一次,然后在您点击一次后更改为file://超链接,并再次被破坏。

所以我使用了=Hyperlink()函数,一切都很好,因为Excel无法更改公式中的连接URL字符串。

是的,我赢了...... nope

文件位于受保护的视图时,由于 安全设置 或者,如果用户 在Outlook中将该文件预览为附件 ,则#符号仍会变为%20-%20

enter image description here

enter image description here

由于我们的IT部门不允许我们安装其他浏览器,因此我们无法将Internet Explorer作为默认浏览器(因为它已经是)。

比较两台PC,我能够更改默认浏览器与标准负载,我注意到标准加载中缺少以下注册表项。

解决方案: 另存为 Office Hyperlink Fix.reg (并双击)

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http]

[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"Progid"="IE.HTTP"

将其添加到标准加载(每个用户都需要)后,链接工作没有任何问题!

这不是所有需要的注册表项,但它足以让IE再次要求成为默认浏览器并添加其余的(HTTPS ...)。

答案 7 :(得分:0)

如果问题涉及到Share Point Server门户的链接,则可以剪切部分超链接(在我的情况下为粗体: Beginning_of_the_address / _ layouts / 15 / start.aspx# / 地址的结尾)。

对我来说工作正常(MSO 16 + SPS 2k16)。