2013-02-20 118 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或類似的東西會讓你獲得新粘貼的形狀。