Открытие активной ссылки в PDF с помощью VBA - PullRequest
0 голосов
/ 21 июня 2020

Мне нужно использовать VBA, чтобы открыть PDF-файл, расположенный на определенном веб-сайте, и перейти на определенную страницу в PDF-файле, используя 1 из ссылок, расположенных на первой странице PDF-файла. Используя метод FollowHyperlink в VBA в MS Access, я могу открыть PDF-файл. Я ввел имя ссылки в качестве подадреса в методе FollowHyperlink, но он по-прежнему ведет меня только на начальную страницу. Что-то мне не хватает?

1 Ответ

0 голосов
/ 23 июня 2020

После некоторого исследования в нескольких источниках я обнаружил, что могу вызвать Inte rnet Explorer (функциональность COM существует в IE, но, к сожалению, из того, что мне удалось найти, а не в Edge), и с помощью SendKeys открыть желаемый Интернет страницу и перейдите на конкретную страницу в PDF-файле, содержащую желаемую информацию.

Следующий код был решением, которое работает в этой конкретной ситуации:

Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal 
nCmdShow As Long) As Long

Const SW_SHOWMAXIMIZED = 3
Const SW_SHOWMINIMIZED = 2
Const SW_SHOWNORMAL = 1
Const SW_HIDE = 0


Sub OpenPageToSelectedNameInfo()

    On Error GoTo Err_OPtSNI

    Dim strListLink As String
    Dim strSelectedName As String
    Dim objIE As New InternetExplorer

    strSelectedName = "Selected Name"
    strListLink = "https://www.publicsite.com/directory.pdf"

    With objIE
        .Navigate strListLink
        .Visible = True
        .Silent = False
    End With

    ShowWindow objIE.hwnd, SW_SHOWNORMAL

    WaitSeconds 4           '     Wait for PDF to load before summoning 
                            '     Find panel

    SendKeys "^f", True     '   Open Find panel on PDF
    SendKeys "^-", True     '   Reduce screen size one step
    SendKeys "^-", True     '   Reduce screen size one more step

    SendKeys strSelectedName, True

    SendKeys "{TAB}", True  '   Tab to Find panel settings
    SendKeys "w", True      '   Select Whole Words Only
    SendKeys "{TAB}", True  '   Tab out of settings

    WaitSeconds 2           '   Wait for whole words only to take affect

    SendKeys "^G", True     '   Find next entry - moves from directory page 
                            '   to page with data matching selected name


    Exit_OPtSNI:
        Exit Sub

    Err_OPtSNI:
        strErrMsg = "Error coming from Open Page to Selected Name Info. _
                    Err # " & Err.Number & " - " & Err.Description

        MsgBox strErrMsg
        Resume Exit_OPtSNI

End Sub

Вызов WaitSeconds предназначен для отдельная процедура на основе Sleep API:

Public Declare Sub Sleep Lib "kernel32" (ByVal Milliseconds As Long)

Sub WaitSeconds(intSeconds As Integer)

    On Error GoTo Err_WS

    Dim strErrMsg As String
    Dim dteRelease As Date

    dteRelease = DateAdd("s", intSeconds, Now)

    Do
        Sleep 100
        DoEvents
    Loop Until Now >= dteRelease

    Exit_WS:
        Exit Sub

    Err_WS:
        strErrMsg = "Error coming from Wait Seconds. Err # " 
                   & Err.Number & " - " & Err.Description

        MsgBox strErrMsg
        Resume Exit_WS

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