在特定页面上使用VBA在Google Chrome中打开Excel中的PDF

时间:2018-10-16 07:56:59

标签: excel vba excel-vba google-chrome pdf

我正在Excel中创建一个宏,该宏应在带有chrome的指定页面上打开PDF文档。通常,开口部分工作正常。我唯一的问题是,当我将页码(例如#page = 15)添加到url时,shell以某种方式将“#”符号编码为“%23”,而chrome无法再正确解释(找不到文件) )。

这是我的代码

'The path to the file, replaces spaces with the encoding "%20"
Path = Replace((filePath& "#Page=" & iPageNum), " ", "%20")

Dim wshShell, chromePath As String, shellPath As String
Set wshShell = CreateObject("WScript.Shell")
chromePath = wshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe\")

shellPath = CStr(chromePath) & " -url " & Path

If Not chromePath = "" Then
    'how I first tried it:
    Shell (shellPath) 

    'for testing purposes, led to the same result though:
    Shell ("""C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"" ""C:\Users\t.weinmuellner\Desktop\Evon\PDF Opening\PDFDocument.pdf#page=17""") 

End If

如果有人知道解决方案,我将非常感谢。也许有另一种方法可以使用Chrome进行此操作,但是我还没有发现任何可以动态读取安装路径的内容。抱歉,代码可能很乱,我是新手。

2 个答案:

答案 0 :(得分:3)

如果要从本地硬盘加载文件,只需指定协议file:///。然后#不会翻译成%23

 Shell ("""C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"" ""file:///C:\Users\t.weinmuellner\Desktop\Evon\PDF Opening\PDFDocument.pdf#page=17""") 

答案 1 :(得分:2)

如果系统上安装了Adobe Acrobat Reader,我建议使用Daniel Pineault的功能openPDF。这将直接在Adobe Reader中打开文件。您可以找到函数here

的源代码

测试看起来像这样

Sub TestSO()

Dim fileName As String
Dim pageNo As Long

    fileName = "Path and filename of PDF"
    pageNo = 20
    OpenPDF fileName, 20

End Sub