繁体   English   中英

使用 Excel 中的 VBA 在 pdf 中打开一个页面

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM