是否可以通过指定选择矩形的坐标来选择Visio中的形状?如果是这样,那怎么做呢? 我需要选择并删除Visio页面上特定位置的任何形状。 我希望能够在页面上指定左下角和右上角的坐标,并让vba告诉我id或句柄或者允许我删除这些形状的东西,因为我需要放置一个新的形状在那个特定的位置。我正在寻找像
这样的东西shapes = MyVisioPage.SelectByRectangularCrossingBox(lowerleftX,lowerleftY,upperrightX,upperrightY)
答案 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包围以取消更改。