[英]Open a page in a pdf using VBA in Excel
我正在使用 Excel 中的 VBA 打开 pdf 的特定页面。
Sub CommandButton1_Click()
Dim p As Long, i As Long
'there is a space after exe
ExeFilepath = "C:\Program Files (x86)\Adobe\Acrobat Reader 2015\Reader\AcroRd32.exe "
Filepath = "\\ch3ww0001\fold1\sample.pdf"
Filename = "sample.pdf"
p = Shell(ExeFilepath & Filepath, vbNormalFocus)
another try:
'p = Shell(ExeFilepath + "/A ""page=1"" " + Filepath, vbNormalFocus)
SendKeys "%DG" & [D148] & "+{ENTER}"
For i = 1 To 10 ^ 4
DoEvents
Next
'AppActivate p, True
SendKeys "%DG" & [D148] & "+{ENTER}"
End Sub
我想在 pdf 文档中链接不同的页面。 这些页面列在 D148 到 D160 的单元格中。
我想点击D148-D160的不同单元格打开示例中的页面。pdf。
经过多次尝试,我找到了正确的方法:
使用下面的 shell 命令可以解决这个问题。
但是,我们要注意的是:
pdf 文件必须存储在本地磁盘中。! web 位置无法真正工作。
p = Shell(ExeFilepath + "/A ""page=1"" " + Filepath, vbNormalFocus)
这是完整的代码:
Sub PDF_Link(ByVal target As Range)
Dim p As Long, i As Long
ExeFilepath = "C:\Program Files (x86)\Adobe\Acrobat Reader 2015\Reader\AcroRd32.exe /A ""page="
Filepathname = "C:\Work\example.pdf"
p = Shell(ExeFilepath & target + 2 & """ " & Filepathname, vbMaximizedFocus)
End Sub
在上面的代码中,“目标”是我要打开的命运页面。
我找到了另一种方法来做到这一点,并验证这没问题!
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
Public Sub openPDFPage(ByVal myPage As Long)
Dim myLink As String
'Dim myPage As Long
Dim objIE As New InternetExplorer
myLink = "C:\Work\exapmle.pdf"
'myLink = "http://www.excelvbatutor.com/vba_book/vbabook_ed2.pdf"
'myPage = InputBox("Enter the page number")
With objIE
.Navigate myLink & "#page=" & myPage
.Visible = True
.Silent = False
End With
ShowWindow objIE.hwnd, SW_SHOWMAXIMIZED
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.