2014-03-06 111 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