2014-03-06 87 views
0

以前曾询问过类似的问题,但该解决方案对我无效。使用Access VBA自动填充Word文档:Normal.dotm模板问题

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

背景:

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

问题:

如果一个不同的MS Word文档已经打开,当我点击该按钮,然后我有麻烦关闭所产生的自动填充文件。这是发生了什么事情:

1)我试图“x”出我的自动填充word文档。 2)计算机告诉我,“此文件是由其他应用程序或用户//(C:.... \的Normal.dotm)” 3)我点击“确定” 4),它提供给save-作为Normal模板。 5)我点击“取消” 6)我尝试再次从单词应用程序中“x”。 7)计算机提示我:“已经做了影响全局模板的更改,Normal。是否要保存这些更改?”我点击“不保存” 9)应用程序关闭。

(这个只发生实例时,当我点击窗体上的按钮,Word文档已经打开,否则它完美的作品。)

我的问题:

通常情况下,我只想耸耸肩,生活在这些额外的几个步骤,但我是一个制作数据库的人,所以我必须考虑我的用户。 (难道惹任何东西保存Normal模板 - 步骤7)

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

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

任何帮助将不胜感激。

+0

你可以添加一个这个问题的链接:'一个有点类似的问题已被问(?)'? –

+0

啊,这似乎解决它:http://support.microsoft.com/kb/285885'Application.Quit的SaveChanges:= wdDoNotSaveChanges' – user3380641

+0

而对于这个问题的原因是Word应用程序已经打开,我的代码指令它再次打开。此链接有一个更纯粹的解决方案:http://www.databaseadvisors.com/newsletters/newsletter072002/0207wordautomationlpt1.asp – user3380641

回答

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 
+0

谢谢!是的,这是关键。我在上面的评论中发布的最后一个链接中找到了类似的解决方案。 – user3380641