Убедитесь, что вы используете один экземпляр приложения word, сохраняя его в поле формы, а не в локальной переменной.Затем проверьте, содержит ли Documents
коллекция Application
Document
, имеющая то же значение свойства Path
, что и inputPath
, используйте его.
Для этого вы можете создать такую функцию:
//using MSWord = Microsoft.Office.Interop.Word;
private MSWord.Document OpenDocument(MSWord.Application application, string inputPath)
{
var documents = application.Documents;
foreach (MSWord.Document item in documents)
if (item.Path.ToUpper() == inputPath.ToUpper())
return item;
return documents.Open(FileName: inputPath);
}
В качестве примера использования:
MSWord.Application application;
private void button1_Click(object sender, EventArgs e)
{
if (application == null)
{
application = new MSWord.Application();
application.Visible = true;
}
var document = OpenDocument(application, @"d:\test.docx");
// ...
}
Убедитесь, что вы Quit
приложение, когда оно вам не нужно.