【问题标题】:(VBA) Late Binding (avaoid reference) of Acrobat Type Library(VBA) Acrobat 类型库的后期绑定(避免参考)
【发布时间】:2017-12-29 22:12:54
【问题描述】:

是否有可能以某种方式避免对 Adob​​e Acrobat 类型库的引用? 我无法弄清楚如何...我收到了 ActiveX 错误消息。

我只粘贴我的代码的摘录,因为其余的并不那么重要。 这是早期绑定的代码(设置参考):

Dim Fol_Path As String
Dim Each_Page As Boolean

Dim AC_PD As Acrobat.AcroPDDoc
Dim AC_Hi As Acrobat.AcroHiliteList
Dim AC_PG As Acrobat.AcroPDPage
Dim AC_PGTxt As Acrobat.AcroPDTextSelect

Dim OS_FSO As Object
Dim OS_TxtFile As Object

Set OS_FSO = CreateObject("Scripting.filesystemobject")

Dim Ct_Page As Long
Dim i As Long, j As Long, k As Long
Dim T_Str As String

Dim Hld_Txt As Variant

Each_Page = True

Set AC_PD = New Acrobat.AcroPDDoc
Set AC_Hi = New Acrobat.AcroHiliteList
AC_Hi.Add 0, 32767

... ... ...

        Set AC_PG = .AcquirePage(i - 1)

        Set AC_PGTxt = AC_PG.CreateWordHilite(AC_Hi)

【问题讨论】:

  • 声明as object 强制后期绑定(又名IDispatch)。然后使用set x = CreateObject(objectname)(对于应用程序对象)或set x = GetObject(filename)(对于文档对象)创建对象。
  • 使用后期绑定,您可以为文件夹中的每个文件创建一个文档对象并向其发送命令PrintOut。如果应用程序可以打印它(否则你会得到一个可以忽略的错误)。
  • 在我设法进行后期装订的第一个 sub 中,这个 sub 将 PDF 文件分成几部分(每页一个文件)。但是对于这个 sub 我有问题,这个 sub 打开那些拆分的 PDF 文件并读出整个内容并将其保存到一个字符串变量中。谢谢@ACatInLove:我会试试的,但是 IDispatch 具体是什么?
  • 后期绑定接口。它是客户端程序:你好服务器,你有一个名为 PrintOut 的命令。服务器:是的,我愿意,命令编号 8。客户端程序:请执行 8 号命令。服务器:好的,结果如下。在早期绑定中,您的程序只知道查找命令编号 8。它是 VTable 中的第八个函数地址。另外,您的编译器知道函数期望什么,并且在您正确之前不会编译。在后期绑定中你需要知道。

标签: vba pdf reference acrobat late-binding


【解决方案1】:

@ACatinLove 谢谢!有效! (我的代码提取结果)。 在某处我读到应该在 Dim 之后加上“Const AcroExch As Long = 0”,为什么会这样?

Dim AC_PD As Object
Dim AC_Hi As Object
Dim AC_PG As Object
Dim AC_PGTxt As Object

'Const AcroExch As Long = 0

Dim OS_FSO As Object
Dim OS_TxtFile As Object

Set OS_FSO = CreateObject("Scripting.filesystemobject")

Dim Ct_Page As Long
Dim i As Long, j As Long, k As Long
Dim T_Str As String

Dim Hld_Txt As Variant

Each_Page = True

'Set AC_PD = New Acrobat.AcroPDDoc
'Set AC_Hi = New Acrobat.AcroHiliteList

Set AC_PD = CreateObject("AcroExch.PDDoc")
Set AC_Hi = CreateObject("AcroExch.HiliteList")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    • 2020-10-25
    • 1970-01-01
    • 2019-03-09
    相关资源
    最近更新 更多