Shapes (Shape)![]() |
包含应用于连接符的属性和方法。连接符是用于连接其他两个图形的线,所连接的位置叫做连接站点。如果重新排列已连接的图形,那么连接符的几何图形将自动调整,以使重新排列的图形仍保持连接。
可用 ConnectorFormat 属性返回 ConnectorFormat 对象。使用 BeginConnect 方法和 EndConnect 方法可将连接符的末端与文档中其他图形相连。使用 RerouteConnections 方法可自动寻找由连接符连接的两个图形之间的最短路径。使用 Connector 属性可判断一个图形是否是连接符。
请注意,虽然向 Shapes 集合添加连接符时,对其设置了大小和位置,但将连接符的起点和终点连接到其他图形时,连接符的大小和位置将会自动调整。因而,如果打算用连接符连接其他图形,那么对其设置的初始大小和位置就没有什么实际意义。同样,用连接符连接其他图形时,将指定要连接的图形上的连接站点,但将连接符连接好之后,用 RerouteConnections 方法可能会改变连接符所连接的连接站点,使开始时选定的连接站点变得没有意义。
下例向 myDocument
添加了两个矩形,并用弯曲连接符将这两个矩形连接起来。
Set myDocument = Worksheets(1)
Set s = myDocument.Shapes
Set firstRect = s.AddShape(msoShapeRectangle, 100, 50, 200, 100)
Set secondRect = s.AddShape(msoShapeRectangle, 300, 300, 200, 100)
Setc c = s.AddConnector(msoConnectorCurve, 0, 0, 0, 0)
With c.ConnectorFormat
.BeginConnect ConnectedShape:=firstRect, ConnectionSite:=1
.EndConnect ConnectedShape:=secondRect, ConnectionSite:=1
c.RerouteConnections
End With
连接站点的编号通常按下表所列的规则进行。
图形的类型 | 连接站点编号方案 |
---|---|
自选图形、艺术字、图片和 OLE 对象 | 连接站点从顶部开始按逆时针方向编号。 |
任意多边形 | 连接站点就是顶点,其编号就相应于顶点的编号。 |
对于复杂的图形,如果要搞清楚哪个编号相应于哪个连接站点,可在宏记录器打开的时候对该图形做一些操作,然后再查看所记录的代码;或者可选定该图形,然后运行下例。下述代码将对每个连接站点进行编号,并对每个连接站点连接一个连接符。
Set mainshape = ActiveWindow.Selection.ShapeRange(1)
With mainshape
bx = .Left + .Width + 50
by = .Top + .Height + 50
End With
With ActiveSheet
For j = 1 To mainshape.ConnectionSiteCount
With .Shapes.AddConnector(msoConnectorStraight, _
bx, by, bx + 50, by + 50)
.ConnectorFormat.EndConnect mainshape, j
.ConnectorFormat.Type = msoConnectorElbow
.Line.ForeColor.RGB = RGB(255, 0, 0)
l = .Left
t = .Top
End With
With .Shapes.AddTextbox(msoTextOrientationHorizontal, _
l, t, 36, 14)
.Fill.Visible = False
.Line.Visible = False
.TextFrame.Characters.Text = j
End With
Next j
End With