【发布时间】:2017-12-29 22:12:54
【问题描述】:
是否有可能以某种方式避免对 Adobe 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