使用Access VBA自动填充Word文档:Normal.dotm模板问题

时间:2014-03-06 16:50:53

标签: vba templates ms-access ms-word access-vba

以前曾经问过一个类似的问题,但解决方案对我没有用。

例如,http://www.xtremevbtalk.com/showthread.php?t=99503

背景

我有一个MS Access 2010数据库。在我的数据库中,我有一个带按钮的表单。我已经编程了按钮以打开保存的word文档,在文档中填充书籍标记的位置,然后保存为包含时间的名称的word文档(以下称为自动填充的文档)。这一切都很好。

问题:

如果单击按钮时已经打开了另一个MS Word文档,则无法关闭生成的自动填充文档。这就是:

1)我尝试用自动填充的word文档“x”。 2)计算机告诉我“此文件正由另一个应用程序或用户使用//(C:.... \ Normal.dotm)” 3)我点击“确定” 4)它提供保存 - 作为Normal模板。 5)我点击“取消” 6)我再次尝试从单词应用程序中“x”。 7)计算机提示我:“已经进行了影响全局模板的更改,正常。您要保存这些更改吗?” 8)我点击“不要保存” 9)申请结束。

(仅当我单击表单上的按钮时单词文档已经打开的情况下才会出现这种情况。否则它会完美运行。)

我的问题:

通常情况下,我会耸耸肩并接受这些额外的几步,但我是制作数据库的人,所以我必须考虑我的用户。 (它会弄乱任何东西以保存正常模板 - 第7步吗?)

我用Google搜索了一段时间。对于类似的情况,有些人建议添加objApp.NormalTemplate.Saved = True(其中objApp是Word应用程序对象),但这对我不起作用。

有人可以告诉我发生了什么事吗?有解决方案吗?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您需要做的是检查Word的实例是否已打开。如果是,您可能希望让您的用户知道他们需要关闭他们的Word文档。

' Handle Error In-Line
On Error Resume Next
Set objWord = GetObject(, "Word.Application")

If Err.Number = 429 Then
    'If we got an error, that means there was no Word Instance
    Set objWord = CreateObject("Word.Application")
Else
    Msgbox ("You're going to need to close any open Word docs before you can perform this function.", vbOK)
    Exit Sub
End If

'Reset Error Handler
On Error GoTo 0