0

我在这里找到了一篇关于如何从 MS Access 填写可填写 PDF 的帖子。

它是用于填写可填写 PDF 的 Visual Basic 代码。我一直在使用 Excel 来执行此功能,并希望将我的数据库迁移到 Access 并仍然保留相同的功能。我已经想出了如何将我的 VB 代码添加到按钮,但是当我单击它时,它会给我带来错误。任何可以提供的帮助将不胜感激。

我有 Adob​​e Acrobat X Pro 和 MS Access 2010。我的 PDF 文件是用 word 创建的,然后转换为 PDF 文件,我知道所有字段名称,因为我创建了它们。PDF 文档保存为 c:\CX.pdf,它有 9 页,文档中的一些字段名称示例有:“工厂名称”、“站点位置”、“安装者或所有者”。我的 MS Access 数据库字段的名称相同。

Option Compare Database

Private Sub Command105_Click()

Dim FileNm, gApp, avDoc, pdDoc, jso

FileNm = "c:\CX.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("CX[0].Page1[0].Plant_Name[0]").Value = "Plant_Name"
    jso.getField("CX[0].Page1[0].Station_Location[0]").Value = "Station_Location"
    jso.getField("CX[0].Page1[0].Installer_or_Owner[0]").Value = "Installer_or_Owner"
    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

End Sub

它给了我错误“找不到对象”,现在它没有给我错误,但它仍然没有写入 PDF。

4

1 回答 1

1

这有点旧,但从长远来看它对我有帮助。我确实弄清楚出了什么问题。“找不到对象”意味着代码找不到 PDF 字段,因此您不能将任何内容分配给“getFeild()”返回的对象。最可能的罪魁祸首是该字段的“路径”不正确。尝试只输入字段名称,您可能需要将数据导出到 FTF 文件并在记事本中读取文件以查找字段名称。

字段名称看起来像

T/(FeildName)v/(FeildValue)

一旦对象实际被返回,您就可以为其分配一个值。

于 2016-02-03T23:42:32.193 回答