如何在pdf文件中创建指向特定页面的超链接列表



我有一个很长的PDF文件(扫描的文档超过1000页(。我想创建一个有2000多个超链接的关键词列表,点击页面可以快速指向PDF中的某些页面。

示例:

Keyword list
Word   Page(hyperlink)
abc    P560
def    P124    P223
ghi    P49
jkl    P980    P1023   P32
...    ...

到目前为止,我可以在Chrome中打开任何页面,如下所示。但是我怎样才能把它们变成列表中的超链接呢?它甚至可以在Excel中完成吗?我应该试试HTML文件吗?

Sub test()
Dim chromePath, filePath, pageNum As String
chromePath = "C:Program FilesGoogleChromeApplicationchrome.exe"
filePath = " file:///C:/Users/Sebastian/Documents/textbook.pdf"
pageNum = "#page=2"
Shell (chromePath & filePath & pageNum)
End Sub

请尝试下一种方法:

  1. 复制标准模块中的下一个代码,以创建超链接公式(此处位于活动表的"A1"中(:
'Hyperlink function to call macro____________________________________
Sub testCreateHyperlinkFunction()
Dim chromePath, filePath, pageNum As String
chromePath = "C:Program FilesGoogleChromeApplicationchrome.exe"

filePath = "file:\C:UsersSebastianDocumentstextbook.pdf""
pageNum = "#page=2"
'Very important to have # in front of the function name!
Range("A1").Formula = "=HYPERLINK(""#OpenPdfPageClick()"", """ & chromePath & "|" & filePath & pageNum & """)"
End Sub
  1. 复制同一模块中的下一个功能代码:
Function OpenPdfPageClick()
Set OpenPdfPageClick = Selection
Dim arr: arr = Split(Selection.Value, "|")
Shell Chr(34) & arr(0) & Chr(34) & " " & Chr(34) & arr(1) & Chr(34)
End Function
  1. 运行第一个代码创建链接,然后单击";A1〃;活动图纸的单元格,您可以在其中看到创建的链接

可以从具有不同pdf文件全名的单元格中调用相同的函数。我试着展示了一种方法,也可以为函数提供Chrome完整路径,但所有这些都是由Chrome运行的,它的全名可以放在函数代码中的Constant中,并且只传递pdf全名。

由于Chrome安装文件夹可能因用户而异,因此还可以实现从注册表中提取文件夹的功能。事实上,我也会发布这样一个功能:

Function getChromeExePath(strExeApp As String) As String
Dim WSHShell As Object: Set WSHShell = CreateObject("WScript.Shell")
getChromeExePath = WSHShell.RegRead("HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionApp Paths" & strExeApp & "")
End Function

它可以在上面的Sub中调用,以下一种方式创建链接:

代替:

chromePath = "C:Program FilesGoogleChromeApplicationchrome.exe"

你可以使用:

chromePath = getChromeExePath("chrome.exe")

请测试并发送一些反馈。我(用我的一个文件(测试了它,它正常工作。

最新更新