如何在打开不受信任的visio文档时强制visio重新评估公式

时间:2009-09-21 17:57:39

标签: xml sdk visio formula shapesheet

我有一个在Visio外部创建Visio文件(VDX)的模块。根据SDK,这指的是“不受信任的”XML。 我通过复制模板中的Masters创建了我的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可以打开它,但子形状具有主控的默认宽度和高度。 另外,形状之间的链接不能正确路由。

如果我复制/粘贴相同的新文件,那么我会得到预期的结果。

我试图强制子形状的宽度和高度。我遇到了同样的问题。

我尝试通过显式调用Cell类的trigger()方法在打开文档时使用VBA代码,并获得预期的结果。 它也有效,我打开形状表。值是黑色的,我只是在单元格上输入,我也得到了预期的结果。

我对这个问题的理解是,当我打开文档时,visio不会评估子形状的公式。

不幸的是,我不能依靠宏来强制和更新单元格。我想知道在打开文档时是否有办法强制重新评估子形状的公式。

提前致谢。

埃里克

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

基于 http://blogs.office.com/2013/01/29/10-tips-for-developers-working-with-the-visio-vsdx-file-format/

使用docPropscustom.xml部分中的RecalcDocument标志。这将导致完全重新计算,类似于VDX的负载行为,但也会显着减慢负载。重新计算并加载文件后,下一次保存将从文档中删除RecalcDocument标志。这将限制单个文件加载的性能。 带有RecalcDocument标志的custom.xml部分示例如下所示。