0

我有一个宏,它在 Visio 2003 和 2010 之间的工作方式不同。我正在将一个形状复制并粘贴到页面上,并尝试获取指向粘贴形状的指针。在 2003 年,该形状只是页面上的最后一个形状 ( set ShpObj = PagObj.Shapes(PagObj.Shapes.Count))。然而,在 2010 年,似乎粘贴的形状并不总是设置为页面上的最后一个形状。

目前,我在粘贴操作之前记录页面上的所有独特形状,然后在粘贴操作之后识别新形状。

我尝试监视应用程序 ShapeAdded 事件,但它似乎没有触发粘贴操作。

我还有其他方法可以拾取粘贴的形状吗?

4

3 回答 3

1

你是怎么复制的?Visio 2010 获得了更多的枚举,从而在可能影响收集顺序的术语或位置、容器和标注行为方面更好地控制粘贴操作:

Visio 2010 Page.Paste

Visio 2007 Page.Paste

很遗憾 Paste 没有返回选择,但是你看过 Shape.Duplicate 和 Selection.Duplicate 分别返回形状和选择对象吗?

于 2013-02-21T10:31:20.503 回答
1

通过在粘贴操作之前创建一个新的临时图层并将图层的活动单元格设置为 true,从而利用 Visio 的图层功能。将 Active 设置为 true 意味着添加到页面的任何新形状都将添加到该层。然后当粘贴操作完成后,你可以得到这一层的所有形状。要清理,您可以删除临时图层而不删除形状。

于 2013-05-28T00:05:22.230 回答
0

在 Visio 2010 中,新粘贴的形状(或多个形状)在粘贴时始终处于选中状态。因此,在粘贴操作之后,ActiveWindow.Selection 或类似工具将为您提供新粘贴的形状。

于 2015-03-13T14:14:28.077 回答