【问题标题】:Visio Shape ID OverflowVisio 形状 ID 溢出
【发布时间】:2015-11-27 09:53:12
【问题描述】:

Visio Page 对象的 SetFormulas 和 GetResults 方法需要一个包含 ShapeID、Section、Row、Column 的数组,以便批量读取/写入 shapesheet。

但是,我发现在具有大量形状的绘图中,在添加和删除形状后,Visio 的形状 ID 超过了 32768 的短整数限制。似乎 Visio 在名为 ID16 的形状上保留了一个短整数 ID 属性,但通过将 ID16 放入 ShapeID,Section,Row,Column 数组似乎不起作用,并引发“意外的文件结尾”错误。

是否可以在形状 ID 超过短整数限制的图形上以某种方式使用 SetFormulas 和 GetResults 方法?或者有没有办法在绘图中“重新堆叠”形状 ID,只要页面中的形状少于 32768 个,那么所有 ID 都将低于限制?我知道将所有形状复制到新绘图中会花费一些时间,但是在从页面中添加/删除形状后,问题可能会很快再次出现,我的软件经常这样做。

我能想到的唯一其他选择是捕获形状 ID 超过短整数限制的情况,并恢复为逐个单元格和逐个形状执行操作的例程,而不是在单个批次中。

【问题讨论】:

    标签: vba com visio


    【解决方案1】:

    我担心这个没有解决方案,微软需要创建 Int32 版本的 SetResults/GetResults/SetFormulas/Getformulas/DropMany。

    随着如今 PC 变得越来越快,创建巨大的 Visio 图表变得更加容易。

    将图表重新渲染到新页面确实有助于为您赢得一些时间,但是 16 位形状 ID(实际上是 15 位限制)在 2021 年有点愚蠢!

    【讨论】:

      猜你喜欢
      • 2013-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-06
      • 1970-01-01
      • 2015-09-15
      • 1970-01-01
      相关资源
      最近更新 更多