「パワーポイント マクロ 画像 中央」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
画像を、スライドの中央・中心に配置する、PowerPoint VBA(Visual Basic for Applications)・マクロを探している方による検索です。
Shapeをスライドの中央に配置するサンプルマクロ
画像もPowerPoint VBA的には図形・Shapeオブジェクトの一種ですから、以下のようなマクロで、スライドの中央・中心に配置することができます。
Dim sld_w As Single ''スライドの横幅
Dim sld_h As Single ''スライドの高さ
Dim shp_w As Single ''Shapeの横幅
Dim shp_h As Single ''Shapeの高さ
dim msg as string
With ActiveWindow.Selection
''図形が選択されていない場合はマクロを終了
If .Type = ppSelectionNone _
Or .Type = ppSelectionSlides Then
msg = "中央に配置したいShapeを選択してください。"
MsgBox msg
Exit Sub
End If
''スライドのサイズを取得
sld_w = .SlideRange.Master.Width
sld_h = .SlideRange.Master.Height
''図形のサイズを取得
shp_w = .ShapeRange.Width
shp_h = .ShapeRange.Height
''図形の位置を移動
.ShapeRange.Left = (sld_w - shp_w) / 2
.ShapeRange.Top = (sld_h - shp_h) / 2
End With
End Sub図形・Shapeを選択しておいて上記のマクロを実行すると、選択されていたShapeが、スライドの中央・中心に配置されます。
スライドの左上からのShapeの位置を指定する
Shapeの配置は、Shapeの左上を、スライドの左上からどの位置に置くかによって決められます。
Shapeの左端を、スライドの左端からどの位置にするのかを指定しているのが、マクロの最後のほうの、
.ShapeRange.Left = (sld_w - shp_w) / 2
の部分です。
スライドの横幅のサイズの半分から、Shapeの横幅のサイズの半分を引き算した値を、左端にすれば、そのShapeはスライドの左右中央に配置されます。(この部分は算数の話ですから、納得できない方は紙と鉛筆を使って是非しっかりと考えて納得してください。)
スライドの横幅の半分のサイズから、Shapeの横幅のサイズの半分を引き算する計算式を整理したのが、
.ShapeRange.Left = (sld_w - shp_w) / 2
の右辺「(sld_w - shp_w) / 2」です。
Shapeの上端を、スライドの上端からどの位置にするのかを指定しているのが、
.ShapeRange.Top = (sld_h - shp_h) / 2
の部分です。
考え方は横方向の配置を決めるのと、もちろん同じです。
この左上の位置を指定する
.ShapeRange.Left = (sld_w - shp_w) / 2
.ShapeRange.Top = (sld_h - shp_h) / 2
という指定をするために、この前で変数にサイズを格納しています。
スライドの横幅と高さを
sld_w = .SlideRange.Master.Width
sld_h = .SlideRange.Master.Height
変数に格納し、
シェイプの横幅と高さを
shp_w = .ShapeRange.Width
shp_h = .ShapeRange.Height
変数に格納しています。
Shape非選択時にエラーとならないように
Shapeが選択されていない状態で実行されるとエラーになってしまうのを避けるため、Shapeが選択されていない場合は、
If .Type = ppSelectionNone _
Or .Type = ppSelectionSlides Then
メッセージを表示してマクロを終了しています。
msg = "中央に配置したいShapeを選択してください。"
MsgBox msg
Exit Sub
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Shapesコレクション・Shapeオブジェクト » 選択されたShapeをスライドの中央・中心に配置するパワポマクロ