我有一个很长的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
请尝试下一种方法:
- 复制标准模块中的下一个代码,以创建超链接公式(此处位于活动表的"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
- 复制同一模块中的下一个功能代码:
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
- 运行第一个代码创建链接,然后单击";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")
请测试并发送一些反馈。我(用我的一个文件(测试了它,它正常工作。