首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Access 2013,模块不在Word 2013文档上生成字段,但主窗体中的函数生成字段

Access 2013,模块不在Word 2013文档上生成字段,但主窗体中的函数生成字段
EN

Stack Overflow用户
提问于 2016-07-28 23:46:47
回答 1查看 25关注 0票数 0

我有一个简单的Access 2013数据库,目前有一个表,一个用于输入数据的表单。我使用表单输入数据,如名字、姓氏等。然后,我让数据库调用一个函数,该函数接受这些值,并将它们放在word文档的特定区域中(类似于邮件合并,但邮件合并并不完全满足我的需要)。然后,该函数将该word文档的副本转换为.pdf,并将其保存在预定义的位置。

我当前将该函数绑定到表单上的一个按钮上。现在一切都很好,我想把即将出现的大量代码分解成模块;然而,这就是我遇到问题的地方。当我将此函数放在模块中时,它不会填充word文档上的所有表单域。它只填充一个或两个字段,而不是所有字段。如果我把代码放回到主窗体上的一个函数中,它就能正常工作。

无论哪种方式,我都没有得到任何错误。.pdf被创建并存储在它应该在的位置,但是如果按钮调用模块,它不会填充所有字段。如果按钮在相同的表单中调用该函数,它的工作方式就像冠军一样。我将发布以下代码的简短版本。

我最初的想法是,也许我没有正确调用模块,但在这一点上,我迷失了方向。我试着将值作为'Function Memo(LN,FN,srcFile) as String‘传递,分别标记为'As String',但我似乎不能让它工作。

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2016-07-29 01:18:39

哇。我真傻。在对代码进行了一些额外的探索性操作后,我发现了自己的问题。问题是我的一些变量没有唯一的名称。问题解决了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38641110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档