PowerPointで資料を作成しているときに、図形を誤って選択して位置がズレてしまうことがあります。
作業中に意図せず図形を動かしてしまう問題は、頻繁に発生します。
PowerPointで図形をロックして固定する方法を解説します。
図形をロックして資料作成をより効率化しましょう!
PowerPointで図形をロック(固定)する方法
まずはPowerPointの標準機能を使って、図形を編集できない状態に設定します。
固定したい図形を作成し、切り取り(Ctrl+X)を実行します。
「表示」タブから「スライド マスター」に切り替えて、図形を貼り付け(Ctrl+V)ます。

「表示」タブから「標準」を選択し、通常の編集画面に戻します。
以上の手順で、スライド上の図形が選択できないロック状態になります。
スライドマスター上に図形を配置することで、通常の編集画面では選択できない状態で表示されます。
元の状態に戻す場合は、再度スライドマスターを表示し、該当の図形を切り取って通常のスライドへ貼り付け直します。
パワーポイントのマクロを使って図形をロックする方法[応用]
スライドマスターへの移動操作を自動化するマクロの活用手順です。
まずAlt + F11を押してVBAエディターを起動します。
メニューの「挿入」から「標準モジュール」を選択し、モジュールを2つ作成します。
作成した標準モジュールに、下記の2つのマクロコードをそれぞれ貼り付けます。
選択した図形を固定するマクロ
'図形をロックする
Public Sub lockShapes()
Dim sh As Shape
Dim n As Integer, m As Integer, k As Integer
'エラーチェック
Call preCheck
'選択した図形をカット
ActiveWindow.Selection.ShapeRange.Cut
'ダミーマスターを作る
Call makeDummyMaster(n)
'選択した図形をダミーマスターに貼り付け
ActivePresentation.Designs(n).SlideMaster.Shapes.Paste
'選択したスライドにダミーマスターを適用
m = ActiveWindow.Selection.SlideRange.SlideIndex
k = ActiveWindow.Selection.SlideRange.CustomLayout.index
ActivePresentation.Slides(m).CustomLayout = ActivePresentation.Designs(n).SlideMaster.CustomLayouts(k)
'余分なダミーマスターを削除
Call cleanDummyMaster
'ダミーマスターの名前を整理
Call renameDummyMaster
End Sub
'エラーチェック
Private Sub preCheck()
'表示がスライドでない時は終了
If cView <> "Slide" Then
Debug.Print "スライド表示でない"
End
End If
'選択範囲がシェイプでないときは終了
If ActiveWindow.Selection.Type <> ppSelectionShapes Then
Debug.Print "選択なし"
End
End If
End Sub
'ダミーマスターを作る
Private Sub makeDummyMaster(ByRef n As Integer)
Dim i As Integer, j As Integer
Dim d As Design
i = ActiveWindow.Selection.SlideRange.SlideIndex
j = ActivePresentation.Slides(i).Design.index
Set d = ActivePresentation.Designs.Clone(ActivePresentation.Designs.item(j))
d.Name = "DummyMST" & 0
n = d.index
Set d = Nothing
End Sub
'余分なダミーマスターを削除
Private Sub cleanDummyMaster()
Dim d As Design
Dim cl As CustomLayout
Dim i As Integer
Dim numD As Integer
'不使用のダミーマスターを削除
numD = ActivePresentation.Designs.Count
For i = numD To 1 Step -1
Set d = ActivePresentation.Designs(i)
If InStr(d.Name, "DummyMST") <> 0 Then
On Error Resume Next
For Each cl In d.SlideMaster.CustomLayouts
cl.Delete
Next
On Error GoTo 0
If d.SlideMaster.CustomLayouts.Count = 0 Then d.Delete
End If
Next
Set d = Nothing
End Sub
'ダミーマスターの名前修正
Private Sub renameDummyMaster()
Dim d As Design
Dim i As Integer
i = 0
For Each d In ActivePresentation.Designs
If InStr(d.Name, "DummyMST") <> 0 Then
i = i + 1
d.Name = "DummyMST" & i & "tmp"
End If
Next
i = 0
For Each d In ActivePresentation.Designs
If InStr(d.Name, "DummyMST") <> 0 Then
i = i + 1
d.Name = "DummyMST" & i
End If
Next
End Sub
'表示されているビュータイプを判定する関数
Private Function cView() As String
Dim p As Pane
For Each p In ActiveWindow.Panes
If p.ViewType = ppViewSlide Then
cView = "Slide"
Exit Function
ElseIf p.ViewType = ppViewSlideMaster Then
cView = "Master"
Exit Function
End If
Next
cView = "Others"
End Function固定した図形の戻し方すマクロ
'ロックした図形を元に戻す
Public Sub unlockShapes()
Dim i As Integer
Dim sld As Slide, sh As ShapeRange
Call preCheckMaster
ActiveWindow.Selection.ShapeRange.Cut
i = ActiveWindow.View.Slide.Design.index
Call ShowSlide
For Each sld In ActivePresentation.Slides
If sld.Design.index = i Then
Set sh = sld.Shapes.Paste
sh.ZOrder msoSendToBack
sh.Select
Set sh = Nothing
End
End If
Next
End Sub
'エラーチェック
Private Sub preCheckMaster()
'表示がスライドでない時は終了
If cView <> "Master" Then
Debug.Print "マスター表示でない"
End
End If
'選択範囲がシェイプでないときは終了
If ActiveWindow.Selection.Type <> ppSelectionShapes Then
Debug.Print "選択なし"
End
End If
'ダミースライド以外を選択しているときは終了
If InStr(ActiveWindow.View.Slide.Design.Name, "DummyMST") = 0 Then
Debug.Print "ダミースライドを選択していない"
End
End If
End Sub
'表示されているビュータイプを判定する関数
Private Function cView() As String
Dim p As Pane
For Each p In ActiveWindow.Panes
If p.ViewType = ppViewSlide Then
cView = "Slide"
Exit Function
ElseIf p.ViewType = ppViewSlideMaster Then
cView = "Master"
Exit Function
End If
Next
cView = "Others"
End Function2つのマクロの貼り付けが完了したら、VBAエディターを閉じます。
エラーが発生する場合は、「’エラーチェック」の記述の前(上部)に下記のコードを追加してください。
'スライドを表示
Private Sub ShowSlide()
Application.ActiveWindow.ViewType = ppViewSlide
Application.ActiveWindow.ViewType = ppViewNormal
End Sub
対象の図形を選択した状態で、「表示」>「マクロ」から「lockShapes」を実行すると図形をロックできます。
画面右下の表示切り替えアイコン(標準アイコンなど)をShiftキーを押しながらクリックすると、スライドマスターへ素早く切り替わります。
スライドマスター上で図形を選択し、「表示」>「マクロ」から「unlockShapes」を実行するとロックを解除できます。

作業効率化に役立つその他のツールは、関連記事をご確認ください。

作業を効率化する関連マクロについては、こちらの記事で解説しています。

この記事で紹介しているコードは、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。
PowerPointの操作は、ほかにも書いています。



まとめ
図形のズレを防ぐスライドマスターの活用方法を身につけて、資料作成の作業効率を高めましょう。
