ConnectorFormat オブジェクト

Microsoft PowerPoint Visual Basic リファレンス

ConnectorFormat オブジェクト

複数のオブジェクト
ConnectorFormat
Shape

コネクタに設定されるプロパティとメソッドが含まれます。コネクタは、結合点と呼ばれる点で 2 つの図形を接続する線です。接続された図形を再配置すると、コネクタの形は、図形が接続状態を維持するように自動的に調整されます。

使い方

ConnectorFormat オブジェクトを取得するには、ConnectorFormat プロパティを使用します。コネクタの両端をスライドの他の図形に接続するには、BeginConnect および EndConnect メソッドを使用します。コネクタで接続された 2 つの図形間の最短経路を自動的に見つけるには、RerouteConnections メソッドを使用します。図形がコネクタであるかどうかを確認するには、Connector プロパティを使用します。

Shapes コレクションにコネクタを追加する場合は大きさと位置を指定しますが、コネクタの始点と終点をコレクションの他の図形に接続すると、その大きさと位置は自動的に調整されます。したがって、コネクタをほかの図形に接続すると、最初に指定した大きさや位置は無効となります。同様に、コネクタを接続するときに、接続する図形の結合点を指定しますが、コネクタを接続後に RerouteConnections メソッドを使用すると、コネクタを接続する結合点が変更され、以前の結合点の選択は無効となります。

次の使用例は、myDocument に 2 つの四角形を追加し、その 2 つの四角形を曲線コネクタで接続します。

Set myDocument = ActivePresentation.Slides(1)
Set s = myDocument.Shapes
Set firstRect = s.AddShape(msoShapeRectangle, 100, 50, 200, 100)
Set secondRect = s.AddShape(msoShapeRectangle, 300, 300, 200, 100)
With s.AddConnector(msoConnectorCurve, 0, 0, 0, 0).ConnectorFormat
    .BeginConnect ConnectedShape:=firstRect, ConnectionSite:=1
    .EndConnect ConnectedShape:=secondRect, ConnectionSite:=1
    .Parent.RerouteConnections
End With
		

解説

通常、結合点は、次の表に示す規則に従って番号が付けられます。

図形の種類 結合点番号付け規則
オートシェイプ、ワードアート、図、OLE オブジェクト 結合点は、上から反時計周りに番号が付けられます。
フリーフォーム 結合点は頂点で頂点番号に対応して結合点に番号が付けられます。

複雑な図形の結合点番号を調べるには、他の図形にコネクタを接続する一連の操作をマクロ記録し、記録されたコードを調べるか、作成した図形を選択し、次の使用例を実行します。このコードは、各結合点に番号を付け、それをコネクタに接続します。

Set mainshape = ActiveWindow.Selection.ShapeRange(1)
With mainshape
    bx = .Left + .Width + 50
    by = .Top + .Height + 50
End With
With ActiveWindow.View.Slide
    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.TextRange.Text = j
        End With
    Next j
End With