2013-10-01 51 views
0

我有一個Windows窗體與Office Word裏面。我打開Word文檔編程與代碼(_wd的類型Microsoft.Office.Interop.Word.ApplicationClass的 - 我使用VS 2012,.NET 4.5,Office 2007中):C#保存Word文檔沒有提示給'其他地方打開文檔錯誤'

public void LoadComponent(string path) 
    {    
     if (_wd.Documents.Count != 0) _wd.ActiveDocument.Close(); 
     _wd.Documents.Add(ref path); 
    } 

我的問題當我想保存活動文檔時出現。我不想保存提示出現 - 這裏就是我試過,無法取消提示對話框:

_wd.ActiveDocument.Saved = TRUE;
_wd.ActiveDocument.Save();

如果我嘗試:

_wd.ActiveDocument.SaveAs(_filePath,Type.Missing,Type.Missing,Type.Missing, Type.Missing,Type.Missing,類型。 Missing,Type.Missing,Type.Missing, Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing, Type.Missing,Type.Missing);

我收到異常:'Word無法保存此文件,因爲它已在其他地方打開。' - 但它只在我的應用程序內部打開,無處可用。如何保存打開的Word文檔而不用保存提示對話框編程?有趣的是,即使我試圖通過按'保存'按鈕保存文檔,我得到了保存提示對話框 - >像文檔沒有創建之前在光盤上。但是,文檔是從光盤打開的,只有以編程方式打開。如果我用Word打開文檔,然後按'保存',我從來沒有得到保存提示對話框。

+0

嗯,這是可能的。你多久創建一個_wd的* new *實例?只要做一次就可以避免麻煩。 –

回答

1

我收到異常:「Word無法保存此文件,因爲它已經是 打開其他地方。」

只有當您的文檔在Application的另一個實例中打開時,才應該收到此內容。

下面的例子對我的作品,而不會提示:

var path = @"C:\Temp\temp.docx"; 

Word.Application wordApp = new Word.Application(); 
Word.Documents documents = wordApp.Documents; 
Word.Document doc = documents.Add(path); 
doc.Range().Text = "Test Text"; 
doc.SaveAs2(path); 
wordApp.Quit(); 

在任務管理器中查看該WINWORD.EXE過程的流浪實例。如果Application的實例未正確關閉(以編程方式),則可能會發生這種情況。

其中一個流浪過程可能會阻止您的Document打開。

+0

你是對的 - 我打開任務管理器,發現有很多WINWORD.EXE進程打開。當我關閉我的應用程序並且他們以某種方式保存我的文檔時,我並沒有關閉這些流程。只有一個WINWORD.EXE,我沒有提示保存,沒有'其他地方打開文檔'警告。 – FrenkyB

0

似乎你並不是唯一一個經歷過它的人。 可能是MSWORD中的錯誤。 作爲建議here

·   Click on start->run. 
·   Type %appdata% and click ok. 
·   Go to Microsoft->templates folder and delete Normal.dotm. 
·   Restart word