「マクロオートシェイプの円の重なりをなくす」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
この検索だけでは、どのアプリケーションのマクロを探しているのか(ExcelマクロなのかWordマクロなのか)わかりませんが、PowerPoint 2013に存在している[図形の結合]コマンドを使うと、
オートシェイプ(図形)の重なりをなくすことができますので、そんなVBA(Visual Basic for Applications)のコードをここではご紹介しておきます。
型抜き/合成を行うサンプルマクロ
「オートシェイプの円の重なりをなくす」ということは、[図形の結合]を利用する場合[型抜き/合成]を行うということでしょう。
On Error GoTo ERR_HNDL
ActiveWindow.Selection.ShapeRange. _
MergeShapes msoMergeCombine
Exit Sub ERR_HNDL:
MsgBox "複数の図形を選択してから実行してください。"
End Sub
例えば、上図の状態から上記のマクロを実行すると、下図のような[型抜き/合成]が行われます。
「円の重なりをなくす」ことができたわけです。
ShapeRangeオブジェクトのMergeShapesメソッドで、引数にmsoMergeCombineを指定すると[型抜き/合成]が行われるのです。
さまざまな結合マクロのサンプル
その他の結合コマンドを使ったマクロをまとめてご紹介しておきます。
ActiveWindow.Selection.ShapeRange. _
MergeShapes msoMergeUnion
End Sub
Sub 図形の結合_切り出し()
ActiveWindow.Selection.ShapeRange. _
MergeShapes msoMergeFragment
End Sub
Sub 図形の結合_重なり抽出()
ActiveWindow.Selection.ShapeRange. _
MergeShapes msoMergeIntersect
End Sub
ActiveWindow.Selection.ShapeRange _
.MergeShapes msoMergeSubtract
End Sub
複数の図形を選択して、
上記のマクロを実行してみてください。
MergeShapesメソッドの引数によって、どう結合されるか変化します。
msoMergeUnionの場合は、選択されていた図形が一体化する[接合]
msoMergeFragmentの場合、重なった部分でバラバラになる[切り出し]
msoMergeIntersectの場合、図形の重なり部分だけが残る[重なり抽出]
msoMergeSubtractの場合、上にあった図形で下の図形を切り取る[単純型抜き]
がそれぞれ行われます。
ちなみに、図形の結合コマンドは、PowerPoint 2010でも隠しコマンドとして存在していますが、PowerPoint 2010で上記のマクロを実行しようとしてもエラーとなり、実行することはできません。
- Newer:自分に何が足りないのか系統だてて理解できた
- Older:ネットを探してもわからなかった疑問がほぼ解決した
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Shapesコレクション・Shapeオブジェクト » 図形の結合を行うPowerPointマクロ