我有一个在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不会评估子形状的公式。
不幸的是,我不能依靠宏来强制和更新单元格。我想知道在打开文档时是否有办法强制重新评估子形状的公式。
提前致谢。
埃里克
答案 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部分示例如下所示。