Как заставить Visio переоценивать формулы при открытии ненадежного документа Visio

У меня есть модуль, который создает файл Visio (VDX) вне Visio. В соответствии с SDK это относится к «ненадежному» XML. Я создал свой xml-файл, скопировав мастер-файлы со своего трафарета, а затем ссылаясь на них, используя разреженный XML-файл.

В моем разреженном xml я переопределяю расположение и размер фигуры следующим образом:

<Shape ID="154" Master="0">
       <Text>Text of the shape</Text>
       <XForm>
         <PinX>2.90625</PinX>
         <PinY>3.895833333333333</PinY>
         <Width F="No Formula">0.75</Width>
         <Height F="No Formula">0.5</Height>
       </XForm>
</Shape>

Моя фигура — это группа, в которой есть подформы.

Это работает, Visio может его открыть, но подформы имеют ширину и высоту по умолчанию мастера. Также ссылки между формами by не маршрутизируются должным образом.

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

Я пытался форсировать ширину и высоту подформ. У меня такая же проблема.

Я попытался использовать код VBA при открытии документа, явно вызвав метод trigger() класса Cell, и получил ожидаемые результаты. Это также работает, я открываю форму листа. Значение выделено черным цветом, я просто нажимаю Enter в ячейке и также получаю ожидаемый результат.

Насколько я понимаю, проблема заключается в том, что visio не оценивает формулы моих подформ, когда я открываю документ.

К сожалению, я не могу полагаться на макросы для форсирования и обновления ячеек. Я хотел бы знать, есть ли способ принудительно переоценить формулы моих подформ, когда я открываю свой документ.

Заранее спасибо.

Эрик


person Community    schedule 21.09.2009    source источник


Ответы (2)


См. решение здесь: http://visguy.com/vgforum/index.php?topic=1199.msg5163#msg5163

person Community    schedule 22.09.2009

На основе http://blogs.office.com/2013/01/29/10-tips-for-developers-working-with-the-visio-vsdx-file-format/

используйте флаг RecalcDocument в части docPropscustom.xml. Это приведет к полному пересчету, аналогичному поведению нагрузки от VDX, но также значительно замедлит загрузку. Как только файл будет пересчитан и загружен, при следующем сохранении флаг RecalcDocument будет удален из документа. Это ограничит снижение производительности загрузкой одного файла. Пример части custom.xml с флагом RecalcDocument показан ниже.

person DaNeSh    schedule 25.11.2014