【问题标题】:Visio VBA Get Pasted ShapesVisio VBA 获取粘贴的形状
【发布时间】:2013-02-20 16:48:13
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: vba visio


    【解决方案1】:

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

    Visio 2010 Page.Paste

    Visio 2007 Page.Paste

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2019-05-31
          • 2019-02-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-05-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多