从 VBA (MS-Access) 填写 PDF 表单
Posted
技术标签:
【中文标题】从 VBA (MS-Access) 填写 PDF 表单【英文标题】:Fill in a PDF form from VBA (MS-Access) 【发布时间】:2012-11-01 22:57:59 【问题描述】:我想从我的 MS-Access 2003 .mdb 项目中填写一份 PDF 表单。 PDF 是使用 Adobe LifeCycle Designer ES 8.2 创建的,所有字段都有重要的名称。但是,将运行 PDf 填充功能的用户没有安装 LifeCycle,而只安装了 Adobe Reader 9.5(可能很快会迁移到 Adobe Reader X,我希望我的代码能有一点面向未来)。
我该如何实现呢?我在网上看到的大多数线程都重定向到官方的 Adobe SDK 文档,当你只做 VBA 时,这完全是一团糟。
谢谢。
【问题讨论】:
【参考方案1】:在合并了几行代码后,终于设法使某些东西工作了。这里是。它适用于在我的 VBA 项目中设置为参考的 Adobe Acrobat 9.0 类型库。
Dim FileNm, gApp, avDoc, pdDoc, jso
FileNm = "c:\form.pdf" 'File location
Set gApp = CreateObject("AcroExch.app")
Set avDoc = CreateObject("AcroExch.AVDoc")
If avDoc.Open(FileNm, "") Then
Set pdDoc = avDoc.GetPDDoc()
Set jso = pdDoc.GetJSObject
jso.getField("topmostSubform[0].Page1[0].fieldName[0]").value = "myValue"
pdDoc.Save PDSaveIncremental, FileNm 'Save changes to the PDF document
pdDoc.Close
End If
'Close the PDF; the True parameter prevents the Save As dialog from showing
avDoc.Close (True)
'Some cleaning
Set gApp = Nothing
Set avDoc = Nothing
Set pdDoc = Nothing
Set jso = Nothing
请注意,topmostSubform[0].Page1[0]
是 Adobe LiveCycle Designer 为您的主要 PDF 文档提供的默认名称,而 fieldName[0]
是您的字段名称。如果您有多个具有相同名称的字段,Adobe LiveCycle Designer 会自动添加索引号,以便您轻松循环浏览字段。
【讨论】:
以上是关于从 VBA (MS-Access) 填写 PDF 表单的主要内容,如果未能解决你的问题,请参考以下文章
我希望从 ms-access 2013 数据库中的所有表单、报告和模块中导出 vba 源代码
如何使用sql语句和vba将数据从MS-Access导入excel power查询?
MS-Access 获取字段值,通过 VBA 函数运行,并发送到 SQL