После некоторого исследования в нескольких источниках я обнаружил, что могу вызвать 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