PowerPointで資料を作成する際に、上図のような図を描くことが、私の場合よくあります。
この作図作業を少しでも楽にするためにマクロを作りました。
選択されている図形(オートシェイプ)を、コネクタで接続するPowerPointマクロです。
選択されている図形をコネクタで接続するサンプルマクロ
複数の図形を選択しておいてから、以下のマクロを実行すると、選択されていた図形がコネクタで接続されます。
Dim con As ConnectorFormat
Dim i As Long
With ActiveWindow.Selection
If .Type <> ppSelectionShapes Then Exit Sub
For i = 1 To .ShapeRange.Count - 1
Set con = .SlideRange.Shapes.AddConnector( _
Type:=msoConnectorElbow, _
BeginX:=0, BeginY:=0, _
EndX:=99, EndY:=99).ConnectorFormat
con.BeginConnect _
ConnectedShape:=.ShapeRange(i), _
ConnectionSite:=3 ' コネクタの接続先・長方形の下
con.EndConnect _
ConnectedShape:=.ShapeRange(i + 1), _
ConnectionSite:=2 ' コネクタの接続先・長方形の左
Next i
End With
End SubShapes.AddConnectorメソッドでコネクタを作成する
選択されている図形に対してFor~Nextループを回して、
For i = 1 To .ShapeRange.Count - 1
とりあえず、コネクタを作成します。
Set con = .SlideRange.Shapes.AddConnector( _
Type:=msoConnectorElbow, _
BeginX:=0, BeginY:=0, _
EndX:=99, EndY:=99).ConnectorFormat
Shapes.AddConnectorメソッドでその名前のとおりコネクタを追加できるのですが、どこにも接続されていないコネクタが作成されます。
どの図形に接続するかは、このあとConnectorFormatオブジェクトの、BeginConnectメソッド・EndConnectメソッドで指定します。
ですからこのマクロでは、AddConnectorメソッドの引数・BeginX・BeginY・EndX・EndYに、適当な数値「0」や「99」を指定しています。
Shape.ConnectorFormatプロパティでConnectorFormatオブジェクトを取得する
Shapes.AddConnectorメソッドは、挿入したコネクタを表すShapeオブジェクトを返すので、
上記のマクロでは、Shapes.AddConnectorメソッドで返されたShapeオブジェクトのConnectorFormatプロパティで、ConnectorFormatオブジェクトを取得して、
オブジェクト変数・conにセットするところまでを一行にまとめています。
Dim con As ConnectorFormat
Set con = .SlideRange.Shapes.AddConnector( _
Type:=msoConnectorElbow, _
BeginX:=0, BeginY:=0, _
EndX:=99, EndY:=99).ConnectorFormat
ちなみに、AddConnectorメソッドは、ShapeRangeオブジェクトにはなく、Shapesコレクションオブジェクトにだけ存在しているというのが、オブジェクト式的には要注意だと感じます。
ConnectorFormat.BeginConnect・EndConnectメソッドでコネクタを接続する
作成したコネクタを接続しているのが、以下の部分です。
con.BeginConnect _
ConnectedShape:=.ShapeRange(i), _
ConnectionSite:=3
con.EndConnect _
ConnectedShape:=.ShapeRange(i + 1), _
ConnectionSite:=2
ConnectorFormatオブジェクトの、BeginConnectメソッドでコネクタの始点を指定した図形に接続し、
EndConnectメソッドでコネクタの終点を指定した図形に接続します。
接続するShapeオブジェクトは、始点・終点とも、引数・ConnectedShapeで指定します。
ConnectorFormat.BeginConnect・EndConnectメソッドで結合点を表すConnectionSiteは要注意
図形のどの結合点に接続するかを指定する引数・ConnectionSiteに指定する数値は、図形の形状によって注意が必要です。
私の場合は、長方形や角丸四角形を使って下図のような接続を行うことが多いので、
BeginConnectメソッドの引数・ConnectionSiteには、長方形や角丸四角形で下側の結合点を表す「3」を、EndConnectメソッドの引数・ConnectionSiteには、長方形や角丸四角形で左側の結合点を表す「2」をそれぞれ指定しています。
コネクタを接続できる結合点の数は、図形の形状によって異なるため、他の図形の場合、左の結合点が「2」ではない可能性、下の結合点が「3」ではない可能性があります。図形の形状によっては適宜コードを修正してください。
- Newer:Wordファイルの最後尾にデータを追記するExcelマクロ
- Older:1ケ月間のフォローアップが手厚かった
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Shapesコレクション・Shapeオブジェクト » 選択されている図形・オートシェイプをコネクタで接続するPowerPointマクロ