【问题标题】:Opening Acrobat Files using VBA使用 VBA 打开 Acrobat 文件
【发布时间】:2017-07-20 15:43:32
【问题描述】:

我正在阅读论坛帖子: https://forums.adobe.com/thread/604177 并开始尝试它。但我认为该功能根本没有加载。我不确定它背后的原因是什么——我认为它必须很简单,并且可能与图书馆有关。有人可以帮忙指出为什么以下代码根本无法编译(代码似乎没有立即执行,因为没有触发断点)。

我加载的库包括

  • Acrobat 蒸馏器
  • Adobe Acrobat 10.0 类型库
  • Acrobat Scan 1.0 类型库

执行此代码的计算机上安装了 Acrobat Professional。

Public Function GetPDF() '(FilePath As String) As Object
    Dim origPdf As Acrobat.AcroPDDoc
    Dim path1 As String
    MsgBox ("Start")

    path1 = Application.ActiveWorkbook.Path
    path1 = path1 & "\31700100.pdf"

    Set origPdf = CreateObject("AcroExch.PDDoc")

    If origPdf.Open(path1) Then
        MsgBox ("weee")
    End If

    origPdf.Close
    Set origPdf = Nothing
End Function

【问题讨论】:

    标签: excel acrobat ole vba


    【解决方案1】:

    用这个创建一个模块:

    Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
    (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
    ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As 
    Long) As Long
    
    Sub GetPDF()
        Dim path1 As String
    
        MsgBox "Start"
    
         path1 = Application.ActiveWorkbook.Path
         path1 = path1 & "\31700100.pdf"
    
        ShellExecute 0, "Open", path1, "", "", _        
        vbNormalNoFocus
    End Sub
    

    【讨论】:

    • 嗯,您添加的语句出现了语法错误...还是我做错了?
    • @Isa 在哪一行显示语法错误?我使用的是 Excel 2007,没有任何错误。
    • 我使用的是 Excel 2013。您建议的声明函数行在我复制并粘贴时突出显示为不可接受的语法。
    • 需要重新编辑Declare Function。当您复制和粘贴时,“下划线”标记变得无法阅读。只需删除“下划线”标记并将 Declare Function 设置为一长行。 @Isa
    【解决方案2】:

    在 VBA 中打开文档需要您拥有 Acrobat App 对象。一旦您在函数中有一个应用程序对象,该代码就会起作用。

    Public Function GetPDF (FilePath As String) As Object
        Dim ArcoApp As New Acrobat.AcroApp
        Dim OriPdf As New Acrobat.AcroPDDoc
    
        Set ArcoApp = CreateObject("AcroExch.App")
        Set OriPdf = CreateObject("AcroExch.PDDoc")
    
        If OriPdf.Open(FilePath) Then
            MsgBox ("weee")
        End If
    
        GetPDF = OriPdf
    
        OriPdf.Close
        AcroApp.Close
        Set OriPdf = Nothing
        Set AcroApp =  Nothing
    End Function
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-27
      • 1970-01-01
      相关资源
      最近更新 更多