2013-07-26 96 views
0

我在here上找到了一篇關於如何從MS Access填寫可填寫PDF的文章。從MS Access填寫PDF表格

這是填寫可填寫PDF的Visual Basic代碼。我一直在使用Excel來執行此功能,並希望將我的數據庫遷移到Access並仍保持相同的功能。我已經想出瞭如何將我的VB代碼添加到按鈕,但當我點擊它給我和錯誤。任何可以給予的幫助將不勝感激。

我有Adobe 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。

+0

您應該(至少)發佈您正在使用的確切代碼和錯誤消息。 (注意:如果您有任何問題需要發佈自己的問題,那麼您不應該在其他問題中發帖,這是正確的,即使來自同一作者也是如此)。 –

+0

@Adriano我將代碼添加到我的問題。 –

+0

1)找不到對象? 2)你確定你已經註冊了AcroEch.XYZ COM對象嗎? –

回答

0

這有點舊,但它從長遠來看對我有幫助。我弄清楚了什麼是錯的。 「未找到對象」表示代碼無法找到PDF字段,因此您無法將任何內容分配給「getFeild()」返回的對象。最有可能的罪魁禍首是該字段的「路徑」不正確。嘗試只填寫字段名稱,您可能需要將數據導出到FTF文件,然後在記事本中讀取該文件以查找字段名稱。

字段名看起來像

T/(FeildName)v/(FeildValue) 

一旦對象實際上是被退回,你就可以給它分配一個值。