Динамическое создание документов Office Open XML: обновление всех полей при открытии

Я программно создаю документ Office Open XML (формат Word 2007) и хотел бы, чтобы все поля обновлялись при первом открытии создаваемого документа в Word.

Когда я исследовал это некоторое время назад, единственным способом сделать это было запустить VB Script при открытии документа. Но VB Script не запускается по умолчанию, и для этого пользователь должен авторизовать сценарии, что сложнее, чем просить пользователя сделать «выбрать все, F9», и поэтому это противоречит цели.

Любое предложение?

Алекс


person avernet    schedule 09.02.2009    source источник


Ответы (2)


Ваше исследование уже показало правильные результаты. Использование VBA или любой другой формы автоматизации Word — единственный выход. В Word и OpenXML есть возможность автоматически обновлять поля при открытии.

person Dirk Vollmar    schedule 16.02.2009
comment
@divo Приятно знать. Спасибо, что подтвердили это. - person avernet; 18.02.2009

Есть способ сделать это без VB Script.

Вы можете установить поле как грязное, и оно будет обновляться при открытии документа.

<w:fldSimple w:instr="TOC" w:dirty="true" />

Если у вас много полей, вы можете обновить настройки в своем документе, чтобы все поля обновлялись при открытии документа.

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<w:settings xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
    <w:updateFields w:val="true" />
</w:settings>

Однако у обоих есть недостаток: диалоговое окно подтверждения, появляющееся при открытии документа, говорит: «Этот документ содержит поля, которые могут ссылаться на другие файлы. Вы хотите обновить поля в этом документе?»

person Eric    schedule 26.08.2010