Откройте PDF из Excel с помощью VBA в Google Chrome на определенной странице. - PullRequest
0 голосов
/ 16 октября 2018

Я создаю макрос в Excel, который должен открывать документ PDF на указанной странице с помощью Chrome.Как правило, открывающаяся часть работает нормально.Моя единственная проблема заключается в том, что когда я добавляю номер страницы (например, # page = 15) к URL-адресу, оболочка каким-то образом кодирует символ "#" в "% 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 голосов
/ 16 октября 2018

Вам просто нужно указать протокол 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""") 
0 голосов
/ 16 октября 2018

Если в системе установлен Adobe Acrobat Reader, я бы предложил использовать функцию openPDF от Daniel Pineault.Это откроет файл в Adobe Reader напрямую.Вы можете найти исходный код функции здесь

Тест может выглядеть так

Sub TestSO()

Dim fileName As String
Dim pageNo As Long

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

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...