У меня есть надстройка MS Word, которая запускает winform, которая позволяет пользователю указать некоторые дополнительные метаданные, которые затем сохраняются в виде файла xml вместе с копией документа в указанном месте.
Все это прекрасно работает при запуске из отдельного документа Word, однако одна из областей, где это будет использоваться, — это запуск документа Word внутри приложения (EMIS WEB). Он запускает копию Word с локального компьютера, что нормально, поскольку позволяет запускать надстройку.
Когда я пытаюсь сохранить документ, я получаю ошибку Command Failed.
. Файл XML сохраняется без проблем: xml.Save(path + docName + ".xml");
.
Приложение предлагает собственный диалог «сохранить».
Сначала я подумал, что это приложение убрало фокус с документа, поэтому this.Application.ActiveDocument.SaveAs
не удалось, потому что это не был активный документ. Поэтому я попытался получить объект Document, когда он был активен, и передать его методу saveDoc, чтобы я мог установить его как активный документ следующим образом:
public void saveDoc(string doc, Word.Document wd)
{
string path = @"\\servername\folder\subfolder\";
object filename = path + doc + ".docx";
try
{
wd.Activate();
this.Application.ActiveDocument.SaveAs(ref filename);
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
Однако это не имело значения, диалоговое окно приложения по-прежнему появляется, и независимо от того, нажимаю ли я «ОК» или «Отмена» в диалоговом окне, оно не обрабатывает команду «Сохранить как».
Я пришел к выводу, что приложение перехватывает команду Save/SaveAs и вместо этого делает что-то свое.
Итак, можно ли сохранить текстовый документ, минуя методы «Сохранить» или «Сохранить как»? Есть ли способ обойти это?