Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Shapesコレクション・Shapeオブジェクト » 選択されたShapeをスライドの中央・中心に配置するパワポマクロ

選択されたShapeをスライドの中央・中心に配置するパワポマクロ

対象:PowerPoint2003, PowerPoint2007, PowerPoint2010, PowerPoint2013

「パワーポイント マクロ 画像 中央」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

画像を、スライドの中央・中心に配置する、PowerPoint VBA(Visual Basic for Applications)・マクロを探している方による検索です。

[スポンサードリンク]

Shapeをスライドの中央に配置するサンプルマクロ

画像もPowerPoint VBA的には図形・Shapeオブジェクトの一種ですから、以下のようなマクロで、スライドの中央・中心に配置することができます。

Sub アクティブな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

Microsoft MVPのきぬあささんからのご指摘を受け、ShapeRangeオブジェクトのAlignメソッドを使ったマクロをご紹介しました。(2014-3-8)
[スポンサードリンク]

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Shapesコレクション・Shapeオブジェクト » 選択されたShapeをスライドの中央・中心に配置するパワポマクロ

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

検索


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

.