如何在Excel中创建指向HTML文件特定部分的超链接?


8

我有一个HTML文件,其中包含锚点。如果指定了锚点名称,则可以通过浏览器到达特定的部分,因此,当我
file://<html_path>/<html_file>.html#<anchor_name>
在浏览器的地址栏中输入内容时,文件会打开并滚动到正确的部分。

如果我将同一链接放置到HYPERLINKExcel中的函数中,则该链接只会打开网页,修剪#零件,而不会滚动到指定的部分。如果我在该HYPERLINK函数中放置了一个带有锚定部分的网页链接,则该链接似乎正常工作,因此不会修剪http://与之链接的链接,#并且仍然可以正常工作。

搜索Google会返回此论坛帖子和一些KB文章,其中指出哈希是有效的文件名字符,但不能在office的文件名中使用该哈希。同一页面上指出,此问题已在Excel 2010中解决,但我使用的是2010版本,显然这仍然是一个问题。

有没有解决方法?我打算将每一行链接到目标文件中的不同部分,并且有1000多个行,因此将原始html文件拆分为多个文件或为每个部分生成单独的URL并链接到该部分的选项会造成混乱文件。


我无法给出答案,因为我目前无法测试,但是您是否使用编码进行了测试,因此使用了'%23'而不是'#'
HTDutchy 2013年

我刚刚检查了一下,似乎没有用。Excel弹出错误消息“无法打开指定的文件”
JohnoBoy 2013年

@terdon'英镑符号/键'是该#字符的有效名称,请参阅WikiPedia文章,还请注意论坛帖子以及与其链接的KB文章使用相同的名称
JohnoBoy 2013年

@JohnoBoy,就是这样。我站得住了,对不起。随时回滚我的编辑。
terdon

Answers:


2

尝试这个。对于每一行,您将需要两列。第一个将包含每一行的书签名称。第二个将包含指向自身的超链接。

要为许多行插入自引用超链接,请运行如下宏:

Sub AddHyperlinksPointingToOwnCell()

   For i = 1 To 100

   Range("A" & i).Select
   ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
       "Sheet1!A" & i, TextToDisplay:="Click Here!"

   ActiveCell.Offset(1, 0).Select

   Next i

End Sub

现在,您需要一个子项才能将浏览器打开到正确的位置。编辑此文件,以便文件和浏览器路径正确:

Sub GoToBookmark()

    Dim ThisRow As Integer
    Dim ThisCol As Integer
    Dim BookmarkName As String

    ThisRow = ActiveCell.Row
    ThisCol = ActiveCell.Column
    BookmarkName = Cells(ThisRow, ThisCol - 1).Value
        'This is looking in the cell to the left for the bookmark name

    If BookmarkName = "" Then
        Exit Sub
    End If

    Shell "C:\Program Files\Internet Explorer\IEXPLORE.EXE " & _
        "C:\PathRoot\Folder\filename.html#" & BookmarkName & ", vbNormalFocus"

End Sub

最后,您需要为包含您的列表的工作表添加一个Worksheet_FollowHyperlink事件:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    Run ("GoToBookmark")
End Sub

希望那应该做!


我将对此进行调查并向您汇报,谢谢
JohnoBoy 2013年

@JohnoBoy-这项工作对您有用吗?
约翰尼·犹他州

很久以前,我相信我完全放弃了超链接。
JohnoBoy 2015年

0

这是为您提供的另一种解决方案,如果您不想使用VBA编码,则仍然可以使用Excel函数“超链接”。这是一步一步的指导。

在线文件:步骤1:假设您的文件名为:http : //en.wikipedia.org/wiki/Intel_Core 步骤2:现在在A1中添加锚点名称:A4
Core_Duo
Core_Solo
Core_2_Duo
Core_i7
步骤3:在单元格B2中输入:

=HYPERLINK("http://en.wikipedia.org/wiki/Core_i3#"&A2,"A2")  

第4步:点击并拖动申请细胞的其余部分
测试工作!


1
不幸的是,卡玛拉姆(Kamalam)的原始发布者希望针对C:驱动器上本地托管的文件执行此操作。如果您再试一次,file://C:/则无法使用。真可惜,因为那样做会容易得多!
安迪·莫尔

此外,这甚至在网络上也不起作用
Gerrat

-1

如果我很好地理解了您的问题,那么这里是一个解决 方法Source = Here替代方法要变通解决此问题,请使用以下方法之一。方法1

使用不包含井号的名称重命名该文件,然后编辑或重新创建超链接。

有关如何在Windows中重命名文件的更多信息,请参见Windows印刷文档或联机帮助。

若要编辑超链接,请按照下列步骤操作:

对于Office 2003和早期版本的Office:右键单击包含问题超链接的单元格。在出现的快捷菜单上,指向“超链接”,然后单击“编辑超链接”。在“键入文件或网页名称”框中,键入要链接到的文件的名称。如果您不知道文件的名称,请单击“文件”并浏览到该文件。单击确定。

对于Office 2007和Office 2010程序:右键单击包含问题超链接的单元格,然后指向“编辑超链接”。在“地址”框中,键入要链接到的文件的名称。如果您不知道文件的名称,请使用“查找...”行上的搜索工具来查找文件。选择文件,然后单击确定。方法2

使用“粘贴为超链接”命令:

对于Office 2003和更早版本:打开您要链接到的文档(名称中包含#号)。复制您要链接到的单元格。在文档中的“编辑”菜单上,单击“粘贴为超链接”。

对于Office 2007和Office 2010程序:打开您要链接到的文档。这是在名称中包含#号的文档。复制您要链接到的单元格。在文档中,单击要在其中显示超链接的单元格。在“主页”选项卡上,单击“剪贴板”组中“粘贴”下方的箭头,然后单击“粘贴为超链接”

如果您使用的是VBA代码,则此行可能对我测试过有帮助。它在chrome和firefox ActiveSheet中都有效。Hyperlinks.Add
锚点:=选择,地址:=“ C:\ path \ to \ your \ file.htm” ,SubAddress:=“ nameOfYourAnchor”,TextToDisplay:=“要显示的文本”)

此处nameOfYourAnchor不带#符号,例如,如果您的链接是C:/ Users / [User] / Desktop / Intel Core-Wikipedia,则免费的encyclopedia.htm#Core_i3您的代码将是(ActiveSheet.Hyperlinks.Add Anchor:=选择,地址:=“ C:/用户/用户/桌面/英特尔酷睿-维基百科,免费的encyclopedia.htm”,子地址:=“ Core_i3”,TextToDisplay:=“要显示的文本”
希望对您有所帮助。


问题是文件名中没有井号。我使用英镑符号链接到文件中的特定部分
JohnoBoy 2013年

2
看看最后两段。
kamalam

@kamalam,表面上这是一个非常整洁的解决方案。但是我无法使此代码正常工作吗?您可以发布适合您的完整子句吗?
安迪·莫尔

-1

以下内容通常适用于带有Excel 2007的Windows7。该文件与电子表格并置。单元格内容:

= HYPERLINK(“ dump_faults_current_leg_bite.htm#BiteRec_000”,“ BITE记录1/35”)

这里有些台式机在使用此链接时遇到问题,但是出现“无法打开指定的文件”错误。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.