「ppt vba shape 最背面へ移動」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
図形を最背面に移動するVBA(Visual Basic for Applications)のコードを探している方による検索です。
参考になりそうなマクロを3つご紹介しておきます。
選択されている図形を最背面に移動するサンプルマクロ
まずは、図形を最背面に移動する基本を確認しましょう。
図形を選択しておいてから以下のマクロを実行すると、選択されていた図形が最背面に移動します。ActiveWindow.Selection _
.ShapeRange.ZOrder msoSendToBack
End Sub
ShapeオブジェクトやShapeRangeオブジェクトに、図形を前面や背面に移動するZOrderメソッドが用意されています。
PowerPointの、Shape.ZOrderメソッド・ShapeRange.ZOrderメソッドには、MsoZorderCmd列挙に定義されている以下のような定数を指定することができます。
値 | 定数 | 定義 |
---|---|---|
0 | msoBringToFront | 最前面へ |
1 | msoSendToBack | 最背面へ |
2 | msoBringForward | 前面へ |
3 | msoSendBackward | 背面へ |
この中のmsoSendToBackを指定することで最背面への移動が行われます。
アクティブスライドの画像を最背面に移動するサンプルマクロ
実務で使うマクロを考えると、最背面に移動させたい図形をどう指定するのかが、ポイントでしょうか。
すべての図形を調べて、何らかの条件に合致した図形を最背面に移動する、という処理が実務では役に立ちそうです。
Dim shp As Shape For Each shp In _
ActiveWindow.Selection.SlideRange.Shapes
If shp.Type = msoPicture Then
shp.ZOrder msoSendToBack
End If
Next shp
End Sub
上記のマクロを実行すると、アクティブなスライド上の画像が最背面に移動されます。
アクティブなスライド上の全図形に対してループを回して、
For Each shp In _
ActiveWindow.Selection.SlideRange.Shapes
図形が画像だったときに、
If shp.Type = msoPicture Then
先にご紹介した最背面に移動する処理を行っています。
shp.ZOrder msoSendToBack
If文の指定方法によって、いろいろと応用が効くはずです。
アクティブプレゼンテーションの画像を最背面に移動するサンプルマクロ
アクティブプレゼンテーション上の画像を最背面に移動するなら、以下のようなマクロです。
Dim sld As Slide
Dim shp As Shape For Each sld In ActivePresentation.Slides
For Each shp In sld.Shapes
If shp.Type = msoPicture Then
shp.ZOrder msoSendToBack
End If
Next shp
Next sld
End Sub
先にご紹介した、アクティブなスライド上の画像を最背面に移動する処理を、全スライドに対して行っているイメージです。
アクティブなプレゼンテーション上の全スライドに対してループを回して、
For Each sld In ActivePresentation.Slides
各スライドで、全図形にループを回し、
For Each shp In sld.Shapes
画像だったときに最背面に移動しています。
If shp.Type = msoPicture Then
shp.ZOrder msoSendToBack
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Shapesコレクション・Shapeオブジェクト » 図形を最背面に移動するPowerPointマクロ