C# сохранить слово документа без приглашения дать "документ открыт в другом месте ошибки"

У меня есть форма Windows с Office Word внутри. Я открываю текстовые документы программно с помощью кода (_wd имеет тип Microsoft.Office.Interop.Word.ApplicationClass - я использую VS 2012, .NET 4.5, Office 2007):

 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, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type. Отсутствует, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

Я получаю исключение: "Word не может сохранить этот файл, потому что он уже открыт в другом месте". - но он открывается только внутри моего приложения, больше нигде. Как сохранить документ Word, который открывается без диалогового окна сохранения, программно? Интересно, что даже если я попытаюсь сохранить документ, нажав кнопку "Сохранить", я получу диалоговое окно сохранения -> как будто документ не был создан ранее на диске. Но документ открывается с диска, только он открывается программно. Если я открою документ с помощью Word, а затем нажму "сохранить", я не получу диалоговое окно сохранения.

2 ответа

Решение

Я получаю исключение: "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 открыть.

Кажется, вы не единственный, кто испытывает это. Может быть ошибка в MSWORD . Как предложено здесь

·         Click on start->run.
·         Type %appdata% and click ok.
·         Go to Microsoft->templates folder and delete Normal.dotm.
·         Restart word
Другие вопросы по тегам