在Excel中单击时,超链接从#更改为%20-%20

时间:2014-07-31 22:47:30

标签: excel

我在Excel 2013表单中有一个链接到内部网站的超链接。当我右键单击并选择"编辑超链接"时,我在地址栏中看到了这一点(这是正确的):

https://myserver.company.com/home/default.html#article?id=1203291003

然而,当我左键单击,中间点击或右键单击 - >打开超链接我得到相同的行为:IE11打开,我得到一个http 404错误,因为找不到链接(如下所示)。

https://myserver.company.com/home/default.html%20-%20article?id=1203291003

什么可以将#转换为%20-%20?这很奇怪,因为%20是一个空格,并且URL中没有空格。

15 个答案:

答案 0 :(得分:17)

这是带有MS Excel的known issue。基本上,散列/磅( # )符号是在文件名中使用的有效字符,但在Office文档中的超链接中不被接受。转换为%20-%20似乎是设计使然。

但是,请看一下这个问题,突出显示相同的问题,但使用Excel 2010:

这似乎暗示它可能是IE的浏览器问题。如果您可以将其他浏览器设置为默认浏览器,即使是暂时用于测试,也可以使用。

答案 1 :(得分:9)

我相信这可能对某些人有所帮助,所以我说id发布: 我遇到了与Word相同的问题,作为一个解决方案,我使用了URL编码器 快速搜索一下这里有很多:

http://www.w3schools.com/tags/ref_urlencode.asp

只需粘贴网址,它就会返回将在Word Excel等超链接中工作的网址。

如果您发现它有用,请投票给我。

答案 2 :(得分:2)

有一种解决方法:

更改默认值" htmlfile" HKEY_CLASSES_ROOT.htm键的另一个值,即" IEhtml"。

此答案基于以下文章并在MS Escel 2010中为我工作: http://answers.microsoft.com/en-us/office/forum/office_2013_release-word/word-2013-hyperlink-converting-to-20-20/4e8a2e8d-b889-4c77-8276-551b11e296d4

答案 3 :(得分:1)

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

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

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

答案 4 :(得分:1)

解决方法:另存为PDF

如果是针对客户,只读&不需要excel / Word格式,您可以将文件另存为PDF。带有“#”的超链接可以在PDF阅读器中使用。例如: http://help.overdrive.com/#videos?ade

答案 5 :(得分:1)

这似乎是特定于IE的,在Chrome上网址正常工作。

但是我发现添加ENCODEURL()为我解决了这个问题。

原始版本:

=IFERROR(HYPERLINK(VLOOKUP(B12,Table1,13,0),"Click Me"),"")

修正版:

=IFERROR(HYPERLINK(ENCODEURL(VLOOKUP(B12,Table1,13,0)),"Click Me"),"")

答案 6 :(得分:0)

这对我试过的机器不起作用。下面的项目或我最后的流程更改纠正了问题。

在MS Word超链接中,#变为%。这是在64位Win7操作系统上运行IE 11时发生的事情。带有#符号的超链接的Word文档导致了我认为的问题。

尝试使用错误404失败的Word文档中的超链接,如下所示: http://iservice.prv/eng/imit/catalogue/software_application_service.shtml#outlook_text

现在将结尾附近的#符号更改为/,然后在IE 11中从word文档中按预期打开超链接,如下面更正的超链接。 http://iservice.prv/eng/imit/catalogue/software_application_service.shtml/outlook_text

当我们使用自助服务网站及其内容进行支持规范更新时,请确保在使用/复制链接作为支持规范word doc中的嵌入式超链接之前,将#中的#链接更改为/ slashes。

答案 7 :(得分:0)

在Excel 2013中,您可以使用encodeurl(url)功能。

Example

来源:http://versitas.com/blog/two-easy-ways-to-encode-urls-in-excel/

然后,您可以将编码后的URL传递给hyperlink(link_location,[friendly_name])函数,以显示更易读的URL。

答案 8 :(得分:0)

我将报告粘贴到Outlook中的新邮件中,并且超链接工作正常。粘贴到Word时它不起作用,也没有将它们从Outlook粘贴回Excel。 (对所有三个应用程序使用Office Professional Plus 2010)。

我后来遵循了上面关于默认浏览器的建议。我进入Chrome并将其设为默认设置。然后关闭Chrome。然后进入IE并将其设为默认值。没有重启。链接工作。

答案 9 :(得分:0)

我有一个用户无法使用IE在URL中打开包含#的链接网站。她可以使用Chrome和Firefox打开。其他人可以使用IE,Chrome和Firefox打开。

我调查了http_user_agent值我的版本并发现了这个: HTTP_USER_AGENT = Mozilla / 4.0(兼容; MSIE 7.0; Windows NT 6.1; WOW64; Trident / 6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0 ;. NET4.0C; .NET4.0E; InfoPath.3)

我发现她的版本有这个值:

HTTP_USER_AGENT = Mozilla / 5.0(兼容; MSIE 10.0; Windows NT 6.1; WOW64; Trident / 6.0)

关键词是兼容的; MSIE 10.0(我的读取兼容; MSIE 7.0)。当我打开IE Developer Tools时,我发现浏览器中的默认文档标准设置是IE7标准。她浏览器中的默认设置是IE10标准。当她将文档设置更改为IE7标准时,关闭浏览器,然后单击Excel中的链接,在IE中正确打开页面。

在我们的企业环境中,我们使用IE作为默认浏览器,默认情况下我们启用了兼容性视图,但不知何故,她的设置已被更改。它确实提供了公平的警告,将来散列(#)可能在URL中存在问题。

答案 10 :(得分:0)

每当Excel在超链接中看到“#”符号时,它会尝试将其解释为相对引用或“魔术哈希”。请参阅:http://www.myonlinetraininghub.com/excel-factor-18-dynamic-hyperlinks-and-the-magic

但是,如果您的超链接中有一个“#”符号,而不打算使用这种精美的Excel功能,那就太糟糕了。你能做什么?

当Excel创建超链接时,看起来Excel将'#'解释为'magic#'。但是,如果在Excel的对象模型中创建超链接,或者在Excel的对象模型中修改现有超链接的地址,则可以将非神奇的#强制转换为Excel,MS Word或任何其他通常具有问题

我制作了一些自动执行此操作的Excel代码,用于包含完整包含井号符号的地址的列表(仅限文本),这些地址用新的工作超链接填充B列。我能够将这些超链接成功粘贴到Word和Outlook中。

Sub Make_Column_A_into_hyperlinks_hashmarkworkaround()

    'Column "A" contains the text of links to some files.
    'This subroutine will turn those cells into Excel hyperlinks...
    '...and then correct the hyperlinks in case Excel misinterpreted
    'a # mark which had originally occurred in the filename.
    'Because I'm using selection.End(xlDown).Select to find the complete list,
    'this program does not tolerate any blanks in the "A" column list.
    'Note that I don't add a hyperlink in Row 1.

    Dim A As Object
    Dim lngRow As Long
    Dim Height As Long

    With ActiveSheet
        .Cells(1, 1).Select
        Selection.End(xlDown).Select
        Height = Selection.Row

        For lngRow = 2 To Height
            .Hyperlinks.Add Anchor:=ActiveSheet.Cells(lngRow, 2), Address:=Chr(34) & _
                ActiveSheet.Cells(lngRow, 1).Value & Chr(34), TextToDisplay:="Open", _
                ScreenTip:=Chr(34) & ActiveSheet.Cells(lngRow, 1).Value & Chr(34)
        Next

        For Each A In ActiveSheet.Hyperlinks

            If A.ScreenTip <> "" Then
                If InStr(1, A.ScreenTip, "#") <> 0 Then
                    A.Address = Mid(A.ScreenTip, 2, Len(A.ScreenTip) - 2)
                End If
            End If

        Next
    End With

End Sub

答案 11 :(得分:0)

这真的很烦人,但有一个简单的解决方法:不要使用带#的URL但使用像https://goo.gl/这样的URL缩短服务

答案 12 :(得分:-2)

请尝试以下主题,以便通过使用VBA的地址从IE窗口打开URL

Using VBA to send url to an active IE window

以下示例:

Dim IE As Object
Dim objCollection As Object

' Create InternetExplorer Object
Set IE = CreateObject("InternetExplorer.Application")

' Send the form data To URL As POST binary request
IE.Navigate "https://YOURURL/niku/nu#action:projmgr.projectDefaultTab&id=5558967"

' Clean up
Set IE = Nothing

希望这对你有用,就像对我一样。 AmiK

答案 13 :(得分:-2)

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

答案 14 :(得分:-3)

转到$newFileCount= 1; open IFH,$filename || die "cannot open the file"; sub CreateNewFiles{ my ($cid) = @_; open TIFH, $templateFile; # this is the template file file2 from the above problem description open OFH,">$templateFileTemp"; while(<TIFH>) { s/::tok::/$cid/g; print OFH $_; } close TIFH; close OFH; move($templateFileTemp,$newFilePrefix.$newFileCount.".ext"); # using a library File::Copy for move operation } while(<IFH>) { chomp($_); $newFileCount= $newFileCount + 1; CreateNewFiles($_); } 并选择Control Panel -> All Control Panel Items -> Default Programs -> Set Default Programs

关闭所有Internet Explorer标签,然后重试。