我有一个简单的Access 2013数据库,目前有一个表,一个用于输入数据的表单。我使用表单输入数据,如名字、姓氏等。然后,我让数据库调用一个函数,该函数接受这些值,并将它们放在word文档的特定区域中(类似于邮件合并,但邮件合并并不完全满足我的需要)。然后,该函数将该word文档的副本转换为.pdf,并将其保存在预定义的位置。
我当前将该函数绑定到表单上的一个按钮上。现在一切都很好,我想把即将出现的大量代码分解成模块;然而,这就是我遇到问题的地方。当我将此函数放在模块中时,它不会填充word文档上的所有表单域。它只填充一个或两个字段,而不是所有字段。如果我把代码放回到主窗体上的一个函数中,它就能正常工作。
无论哪种方式,我都没有得到任何错误。.pdf被创建并存储在它应该在的位置,但是如果按钮调用模块,它不会填充所有字段。如果按钮在相同的表单中调用该函数,它的工作方式就像冠军一样。我将发布以下代码的简短版本。
我最初的想法是,也许我没有正确调用模块,但在这一点上,我迷失了方向。我试着将值作为'Function Memo(LN,FN,srcFile) as String‘传递,分别标记为'As String',但我似乎不能让它工作。
Function Memo(LN, FN, srcFile)
Dim appword As Object
Dim doc As Object
Dim Path As String
Dim pdfFileName As String
Dim folderName As String
Dim directory As String
Path = srcFile
folderName = LN & ", " & FN
directory = Application.CurrentProject.Path & "\" & folderName
pdfFileName = directory & "\" & folderName & " 2015 Memo" & ".pdf"
If Dir(directory, vbDirectory) = "" Then
MkDir (directory)
Else
End If
On Error Resume Next
Error.Clear
Set appword = GetObject(, "word.application")
If Err.Number <> 0 Then
Set appword = CreateObject("Word.Application")
appword.Visible = False
End If
Set doc = appword.Documents.Open(Path, , True)
With doc
.FormFields("TextFN1").Result = FN
.FormFields("TextMI1").Result = MI
.FormFields("TextLN11").Result = LN
.ExportAsFixedFormat pdfFileName, 17
appword.Visible = False
Set doc = appword.Documents.Close()
appword.Quit SaveChanges:=False
End With
Set doc = Nothing
Set appword = Nothing
End Function发布于 2016-07-29 01:18:39
哇。我真傻。在对代码进行了一些额外的探索性操作后,我发现了自己的问题。问题是我的一些变量没有唯一的名称。问题解决了。
https://stackoverflow.com/questions/38641110
复制相似问题