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

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

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

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

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

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

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


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

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

15   голосов , оценка 4.067 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы