PowerPointのスライドマスター編集中に、一部のレイアウトでスライド番号の位置をずらしてしまい、手作業で直すのが面倒だったのでVBAでPowerPointマクロを作りました。
スライド番号の位置と大きさを揃えるサンプルマクロ
以下のSubプロシージャを実行すると、アクティブなプレゼンテーションの全レイアウトのスライド番号の位置と大きさが、スライドマスターのスライド番号と同じ位置に揃えられます。
Const HOL_NAME = "Slide Number Placeholder"
Dim left_ As Single, top_ As Single
Dim width_ As Single, height_ As Single
Dim shp As Shape
With ActivePresentation.SlideMaster
' スライドマスターでスライド番号の位置・大きさを取得
For Each shp In .Shapes.Placeholders
If InStr(shp.Name, HOL_NAME) Then
left_ = shp.Left
top_ = shp.Top
width_ = shp.Width
height_ = shp.Height
End If
Next shp
' 全レイアウトでスライド番号の位置・大きさを設定
Dim lay As CustomLayout
For Each lay In .CustomLayouts
For Each shp In lay.Shapes.Placeholders
If InStr(shp.Name, HOL_NAME) Then
shp.Left = left_
shp.Top = top_
shp.Width = width_
shp.Height = height_
End If
Next shp
Next lay
End Sub
スライド番号の位置を揃えるサンプルで行っている処理
前半のFor Each~Next文、
For Each shp In .Shapes.Placeholders
If InStr(shp.Name, HOL_NAME) Then
left_ = shp.Left
top_ = shp.Top
width_ = shp.Width
height_ = shp.Height
では、スライド番号の左上位置と大きさを取得しています。
スライド番号プレースホルダーの名前は、通常「Slide Number Placeholder 5」ですが、末尾の数字は「5」ではない可能性も否定できないためInStr関数で「Slide Number Placeholder」を名前に含むかどうかを調べています。
Const HOL_NAME = "Slide Number Placeholder"
For Each shp In .Shapes.Placeholders
If InStr(shp.Name, HOL_NAME) Then
後半のFor Each~Next文、
For Each lay In .CustomLayouts
For Each shp In lay.Shapes.Placeholders
If InStr(shp.Name, HOL_NAME) Then
shp.Left = left_
shp.Top = top_
shp.Width = width_
shp.Height = height_
では、先のFor Each~Next文で取得したスライド番号プレースホルダーの位置と大きさを、「Slide Number Placeholder」を名前に含むプレースホルダーに対して設定しています。
最終更新日時:2019-09-28 14:43
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » マスター » 全レイアウトのスライド番号の位置と大きさを揃えるパワポマクロ