使用vba在visio中选择矩形形状

时间:2015-08-20 17:06:09

标签: vba selection visio

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

这样的东西
shapes = MyVisioPage.SelectByRectangularCrossingBox(lowerleftX,lowerleftY,upperrightX,upperrightY)

1 个答案:

答案 0 :(得分:0)

您实际上可以使用这些坐标绘制一个矩形,然后使用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包围以取消更改。