Блокировать документ Word после выполнения макроса с использованием PIA

Я использую Office PIA для интеграции приложения в Word.

Есть несколько документов Word, которые запускают макрос, когда вы их открываете. Моя цель - заблокировать текущий документ, но после выполнения макроса. Есть ли способ сделать это? Думал, что-то вроде этого должно сработать, но нет такого события, как "MacroExecuted" или чего-то еще:

public void OpenDocument(string path)
{
    var app = new Application();
    app.Documents.Open(path);
    app.ActiveDocument.MacroExecuted += LockDocumentEvent;
    app.Visible = true;
}

person Philipp Eger    schedule 10.04.2017    source источник
comment
Я только что проверил vba-internal, и похоже, что app.Documents.Open(path); вернется только после выполнения связанного кода. У вас действительно была проблема с тем, что макрос все еще работал, когда возвращался Open?   -  person grek40    schedule 13.04.2017


Ответы (1)


Нашел после долгих поисков:

Важный метод содержится в объекте документа.

app.ActiveDocument.RunAutoMacro(WdAutoMacros.wdAutoOpen);

Перечисление WdAutoMacros содержит разные значения, указывающие, какой макрос следует выполнить. Для меня это было

WdAutoMacros.wdAutoNew

и

WdAutoMacros.wdAutoOpen

Теперь макрос выполняется после открытия документа из Office SDK.

person Philipp Eger    schedule 23.05.2017