2013-10-01 35 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