【问题标题】:VBA: File-Open to PDF PageVBA:文件打开到 PDF 页面
【发布时间】:2010-03-22 19:10:44
【问题描述】:

我有一个 Excel 电子表格。电子表格中的一列包含 pdf 文件的名称;页码 (name of file;5)。

如何编写 VBA 函数,以便当用户单击该列中的任何单元格时,文件名和页码作为变量传递,并且 pdf 文件打开到指定的页面?

【问题讨论】:

    标签: file pdf file-io excel vba


    【解决方案1】:

    要实现这一点:

    1. 为工作表的 SelectionChanged 事件创建一个事件处理程序。
    2. 为单元格的值创建解析函数。
    3. 创建一个使用页码参数启动 Acrobat 的子例程。

    请参阅以下示例代码。常数应根据您的系统进行更改。此代码需要粘贴到工作表的 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 列中包含此信息的单元格,但文档未打开。没啥事儿。为了让它发挥作用,我在这个过程中缺少什么步骤。谢谢!
    • 确保将MyPathColumn改为3,并且PathToAcrobatExe指向Adobe Acrobat Reader的主exe文件所在的路径(可能叫Acrord32.exe、Acrobat.exe等)跨度>
    猜你喜欢
    • 1970-01-01
    • 2011-04-04
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    • 2023-03-24
    相关资源
    最近更新 更多