【问题标题】:Rectangular selection of shape in visio using vba使用vba在visio中矩形选择形状
【发布时间】:2015-08-23 04:06:38
【问题描述】:

是否可以通过指定选择矩形的坐标在 Visio 中选择形状?如果是这样,如何做到这一点? 我需要选择并删除 Visio 页面上特定位置的任何形状。 我希望能够在页面上指定左下角和右上角的坐标,并让 vba 告诉我 id 或句柄或允许我删除这些形状的东西,因为我需要放置一个新形状在那个特定的位置。我正在寻找类似的东西

shapes = MyVisioPage.SelectByRectangularCrossingBox(lowerleftX,lowerleftY,upperrightX,upperrightY)

【问题讨论】:

  • 我不知道。您可以遍历所有形状并分析它们的位置,如果它们落在您的“区域”中,则将其删除。

标签: vba selection visio


【解决方案1】:

您实际上可以使用这些坐标绘制一个矩形,然后使用Shape.SpatialNeighbors 找出该矩形中的所有形状。像这样 (VBA):

Function SelectByRectangularCrossingBox(page, _
    lowerleftX, lowerleftY, upperrightX, upperrightY) As Selection

    scopeId = page.Application.BeginUndoScope("try")

      Set rc = page.DrawRectangle(lowerleftX, lowerleftY, upperrightX, upperrightY)
      Set SelectByRectangularCrossingBox = rc.SpatialNeighbors(visSpatialContain, 0.01, 0)

    page.Application.EndUndoScope scopId, False

End Function

代码用 BeginUndoScope/EndUndoScope 包裹以取消更改。

【讨论】:

  • 尼古拉,谢谢。我相信这就是我一直在寻找的。​​span>
猜你喜欢
  • 1970-01-01
  • 2019-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-09
相关资源
最近更新 更多