1
我有一个Excel电子表格。电子表格中的其中一列包含PDF文件的名称;页码(name of file;5
)。VBA:文件打开为PDF页面
如何编写VBA函数,以便当用户单击该列中的任何单元格时,文件名称和页码作为变量传递,PDF文件将打开到指定的页面?
我有一个Excel电子表格。电子表格中的其中一列包含PDF文件的名称;页码(name of file;5
)。VBA:文件打开为PDF页面
如何编写VBA函数,以便当用户单击该列中的任何单元格时,文件名称和页码作为变量传递,PDF文件将打开到指定的页面?
要做到这一点:
请参阅以下示例代码。常数应根据您的系统进行更改。此代码需要粘贴在工作表的VBA宏编辑器中。
Private Const MyPathColumn As Integer = 3
Private Const PathToAcrobatExe As String = _
"C:\Program Files\Adobe\Reader 8.0\Reader\Acrord32.exe"
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo errHnd
If Target.Cells.Count = 1 Then
If Target.Column = MyPathColumn Then
If Len(Target.text) > 0 Then
Dim filePath As String
Dim pageNumber As Integer
Call ParsePath(Target.text, filePath, pageNumber)
Call RunPdf(filePath, pageNumber)
End If
End If
End If
Exit Sub
errHnd:
Call MsgBox("Error Opening File", vbCritical)
End Sub
Private Function getShellCommand(filePath As String, _
pageNumber As Integer) As String
getShellCommand = PathToAcrobatExe & " /A ""page=" _
& CStr(pageNumber) & """ """ _
& filePath & """"
End Function
Private Sub RunPdf(filePath As String, pageNumber As Integer)
Call Shell(getShellCommand(filePath, pageNumber), _
vbMaximizedFocus)
End Sub
Private Sub ParsePath(text As String, ByRef filePath As String, _
ByRef pageNumber As Integer)
Dim parts() As String
parts = Split(text, ";")
filePath = parts(0)
pageNumber = CInt(parts(1))
End Sub
我将这段代码粘贴到Worksheet VBA宏编辑器中。必要的信息在第3栏(m:\ hyperlink \ test.pdf; 5)中。我点击包含此信息的第3列中的单元格,但文档未打开。什么都没发生。为了实现这一目标,我错过了这个过程。谢谢! – user299302 2010-03-23 10:18:55
确保将MyPathColumn更改为3,并且PathToAcrobatExe指向Adobe Acrobat Reader的主要exe文件所在的路径(可能称为Acrord32.exe,Acrobat.exe等) – 2010-03-23 10:29:26