Этот метод или свойство недоступно, так как окно документа не активно
У меня проблема с добавлением управления контентом в документ. Мне нужно добавить richtextcontentcontrol в указанном диапазоне к абзацу в документе, но не к activedocument, чтобы документ, который я открываю по пути.
Word.Range range = paragraph.Range;
range.SetRange(1, 3);
try {
var richTextControl2 = document.Controls.AddRichTextContentControl(range, "richTextControl" + counter);
richTextControl2.PlaceholderText = "Enter your first name";
}
catch(COMException e) {
Debug.WriteLine("Error :" + e);
}
документ является Microsoft.Office.Tools.Word.Document
и параграф является Microsoft.Office.Interop.Word.Paragraph
Это исключение находится на линии с AddRichTextContentControl
Вся ошибка:
System.Runtime.InteropServices.COMException (0x800A11FD): This method or property is not available because a document window is not active.
1 ответ
Иметь, вероятно, только полезную подсказку, поскольку в настоящее время я сталкиваюсь с тем же описанием ошибки, при печати документа, открытого невидимым, с помощью Document.PrintOut (). Я думаю, что ошибка может иметь ту же причину в вашем случае.
Я работаю с очень старым кодом OLE/COM на win32 с Office 2003 и 2013 в настоящее время. Я хочу изменить этот код, так как он отображает окно Word при открытии документа, когда Word уже был виден при запуске нашей автоматизации. Код в целом работает годами, но у нас есть проблема с производительностью поиска + замены с использованием COM, если документ открывается в видимом окне Word.
Я сталкиваюсь с ошибкой только тогда, когда не существует никакого процесса Word с, вероятно, бывшим видимым окном, и я открываю документ с visible=false. Если я инициализирую процесс Word с помощью OLE/COM сначала с помощью.OpenOld () или Word видим, просто открывая документ, например, из проводника, я не получаю эту ошибку.
Я использую.OpenOld () (на короткое время), потому что наш код до сих пор использует Word.Application.8, а.Open () в Word 97 кажется.OpenOld () в Word 2003. Я не ожидаю, что наши клиенты выполнение.OpenOld (). Но никогда не знаешь, не хочешь сломать это. Так что это просто запасной вариант. Тем не менее, это изменение дает мне ошибку.
Этот код решает ошибку для меня как-то:
IF __oWord: IWordApplication: видимый __oIWDoc:= oIWordDocuments:Open( __oFS:fullPath,,,,,,,,,,, lNewDocVisible) ELSE __oIWDoc:= oIWordDocuments:OpenOld( __oFS:fullPath) ENIF
Следующим шагом для меня является установка окна документов, видимого до.PrintOut (). Возможно, Word использовался, возможно, пользователь закрыл его между открытием документа и его печатью. Но даже делая это, я не думаю, что это надежный способ. В настоящее время мне интересно, как безопасно открыть и распечатать документ-невидимку. Пожалуйста, поделитесь своими результатами, если вы получите эту ошибку почти по той же причине:)
Надеюсь на помощь и большое спасибо, Том Хорстманн