Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visio VBA获取粘贴的形状_Vba_Visio - Fatal编程技术网

Visio VBA获取粘贴的形状

Visio VBA获取粘贴的形状,vba,visio,Vba,Visio,我有一个宏,它在Visio 2003和2010之间的工作方式不同。我正在将一个形状复制粘贴到页面上,并尝试获取指向粘贴形状的指针。在2003年,该形状只是页面上的最后一个形状(set ShpObj=PagObj.Shapes(PagObj.Shapes.Count))。然而,在2010年,粘贴的形状似乎并不总是设置为页面上的最后一个形状 目前,我正在粘贴操作之前记录页面上的所有唯一形状,然后在粘贴操作之后识别新形状 我尝试监视应用程序Shapeaded事件,但它似乎没有触发粘贴操作 有没有其他方

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

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

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


有没有其他方法可以让我提取粘贴的形状?

您是如何进行复制的?Visio 2010获得了更多的枚举,从而在可能影响收集顺序的条件或位置、容器和调用行为方面对粘贴操作进行了更大的控制:


遗憾的是,粘贴没有返回选择,但是您是否查看了形状。复制和选择。复制分别返回形状和选择对象的形状和选择对象?

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

在Visio 2010中,粘贴新粘贴的形状时始终选中它们。因此,在粘贴操作之后,ActiveWindow.Selection或类似操作将获得新粘贴的形状