Реализация сохранения документа MS Word - C#

Узнай цену своей работы

Формулировка задачи:

Возникла проблема. Пишу библиотеку, реализующую взаимодействие документов Word с системой электронного документооборота. Споткнулся на банальной вещи - сохранение текущего документа Word. Используется Word 2010, PIA 2010, Microsoft.Office.Interop.Word 1)
using Word = Microsoft.Office.Interop.Word
//
 
try
{
        Word.Application WordApp = new Word.Application();
        WordApp.Visible = true;
        Document DocWord = WordApp.Application.ActiveDocument;
        DocWord.SaveAs2(@"D:\Test.doc");
        WordApp.Quit();
}
catch(System.Exception ex)
{
        MessageBox.Show(ex.ToString());
}
При выполнении создаёт новый документ и пишет пишет ошибку: System.Runtime.InteropServices.COMException (0x800A1098). Данная команда недоступна, т.к. не открыт ни один документ. 1) Если инициализацию документа выполнить так:
Document DocWord = WordApp.Application.Documents.Add();
То при сохранении с документа, который был только что создан, файл D:\Test.doc создаётся, но изменения в нём не сохраняются. Если открыть уже сохранённый файл D:\Test.doc, то будет выведена ошибка: System.Runtime.InteropServices.COMException (0x800A14EC). Приложению Word не удалось сохранить данный файл, т.к. он используется другим процессом. 2) Если использовать метод Save();
DocWord.Save();
То при выполнении, создаётся новый пустой документ и в нём выдаётся диалог, чтобы его сохранить. Что не корректно. Новый документ ведь не должен создаваться. Не важно на каком документе выполнять, вновь созданном или уже сохранённом. 3) Если использовать метод SaveAs();
DocWord.SaveAs(@"D:\Test.doc");
То при выполнении результат одинаков с 1) пунктом. Может быть кто-нибудь сталкивался с данной проблемой? Подскажите пожалуйста, ибо при гуглении корректных примеров не нашлось.

Решение задачи: «Реализация сохранения документа MS Word»

textual
Листинг программы
using Word = Microsoft.Office.Interop.Word
//
 
try
{
        Word.Application WordApp = (Microsoft.Office.Interop.Word.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Word.Application"); // Здесь мы не трогаем конструктор объектов (документов word)
        Document DocWord = WordApp.Documents.Application.ActiveDocument;
        DocWord.SaveAs2(DocWord.FullName);
        //DocWord.Close();// если требуется закрыть документ
        //WordApp.Quit(); //если требуется закрыть приложение
}
catch(System.Exception ex)
{
        MessageBox.Show(ex.ToString());
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.067 из 5
Похожие ответы