2013-02-20 75 views
0

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

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

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

有没有其他方法可以选择粘贴的形状?

回答

1

你最近在做什么? Visio 2010中获得了一些更枚举的条款或位置,容器和标注行为,这可能会影响集合为了给更好地控制粘贴操作:

Visio 2010 Page.Paste

Visio 2007 Page.Paste

这是一个耻辱粘贴不返回一个选择,但你看看Shape.Duplicate和Selection.Duplicate分别返回形状和选择对象吗?

0

通过在粘贴操作之前创建一个新的临时图层,并将图层的活动单元格设置为true,充分利用Visio的图层功能。将Active设置为true表示添加到页面的任何新形状都将添加到此图层。然后,当粘贴操作完成后,您可以获取该图层上的所有图形。要进行清理,可以删除临时图层而不删除形状。

0

在Visio 2010中,粘贴它们时总是选择新粘贴的形状(或多个形状)。所以在粘贴操作之后,ActiveWindow.Selection或类似的东西会让你获得新粘贴的形状。