Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Shapesコレクション・Shapeオブジェクト » 選択されている図形・オートシェイプをコネクタで接続するPowerPointマクロ

選択されている図形・オートシェイプをコネクタで接続するPowerPointマクロ

対象:PowerPoint2007, PowerPoint2010, PowerPoint2013

選択されている図形・オートシェイプをコネクタで接続するPowerPointマクロ

PowerPointで資料を作成する際に、上図のような図を描くことが、私の場合よくあります。

この作図作業を少しでも楽にするためにマクロを作りました。

選択されている図形(オートシェイプ)を、コネクタで接続するPowerPointマクロです。

[スポンサードリンク]

選択されている図形をコネクタで接続するサンプルマクロ

複数の図形を選択しておいてから、以下のマクロを実行すると、選択されていた図形がコネクタで接続されます。

Sub 選択されているShapeをコネクタで接続する()

 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 Sub

Shapes.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オブジェクトを返すので、

選択されている図形・オートシェイプをコネクタで接続するPowerPointマクロ

上記のマクロでは、Shapes.AddConnectorメソッドで返されたShapeオブジェクトのConnectorFormatプロパティで、ConnectorFormatオブジェクトを取得して、

選択されている図形・オートシェイプをコネクタで接続するPowerPointマクロ

オブジェクト変数・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メソッドでコネクタの始点を指定した図形に接続し、

選択されている図形・オートシェイプをコネクタで接続するPowerPointマクロ

EndConnectメソッドでコネクタの終点を指定した図形に接続します。

選択されている図形・オートシェイプをコネクタで接続するPowerPointマクロ

接続するShapeオブジェクトは、始点・終点とも、引数・ConnectedShapeで指定します。

ConnectorFormat.BeginConnect・EndConnectメソッドで結合点を表すConnectionSiteは要注意

図形のどの結合点に接続するかを指定する引数・ConnectionSiteに指定する数値は、図形の形状によって注意が必要です。

私の場合は、長方形や角丸四角形を使って下図のような接続を行うことが多いので、

選択されている図形・オートシェイプをコネクタで接続するPowerPointマクロ

BeginConnectメソッドの引数・ConnectionSiteには、長方形や角丸四角形で下側の結合点を表す「3」を、EndConnectメソッドの引数・ConnectionSiteには、長方形や角丸四角形で左側の結合点を表す「2」をそれぞれ指定しています。

コネクタを接続できる結合点の数は、図形の形状によって異なるため、他の図形の場合、左の結合点が「2」ではない可能性、下の結合点が「3」ではない可能性があります。図形の形状によっては適宜コードを修正してください。

[スポンサードリンク]

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Shapesコレクション・Shapeオブジェクト » 選択されている図形・オートシェイプをコネクタで接続するPowerPointマクロ

「Shapesコレクション・Shapeオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.