오피스365에는 도형 잠그기 기능이 있어 배경등의 박스, 이미지가 선택되지 않도록 할 수 있다.
애석하게도 2019버전에는 도형 잠그기 기능이 없는데.. 우회하는 방법으로 비슷하게 사용은 할 수 있다.
vba에 표준 모듈 2개와 클래스 모듈 1개를 만든다. 클래스 모듈의 이름을 `clsPPTEvent` 로 한다.
코드는 아래와 같다.
1번 표준 모듈
'==========================================
'proc module
Option Explicit
' 선택된 도형에 잠금 태그 추가
Sub MarkSelectedShapesAsLocked()
Dim Sel As Selection
Dim shp As Shape
Set Sel = ActiveWindow.Selection
If Sel.Type = ppSelectionShapes Then
For Each shp In Sel.ShapeRange
shp.Tags.Add "LOCKED", "1"
Next shp
MsgBox "선택된 도형에 LOCKED 태그를 달았습니다."
Else
MsgBox "도형을 선택한 상태에서 실행하세요."
End If
End Sub
Sub UnlockLockedShapesOnCurrentSlide()
Dim sld As Slide
Dim shp As Shape
' 현재 창에서 보고 있는 슬라이드
Set sld = ActiveWindow.View.Slide
For Each shp In sld.Shapes
If shp.Tags("LOCKED") = "1" Then
shp.Tags.Delete "LOCKED"
End If
Next shp
MsgBox "현재 슬라이드의 잠금(LOCKED 태그)을 모두 해제했습니다."
End Sub
Sub UnlockAllLockedShapes()
Dim sld As Slide
Dim shp As Shape
For Each sld In ActivePresentation.Slides
For Each shp In sld.Shapes
If shp.Tags("LOCKED") = "1" Then
shp.Tags.Delete "LOCKED"
End If
Next shp
Next sld
MsgBox "프레젠테이션의 모든 잠금(LOCKED 태그)을 해제했습니다."
End Sub
2번 표준 모듈
'==========================================
'exe module
Option Explicit
Public PPTEvent As clsPPTEvent
Sub StartLockMonitor()
Set PPTEvent = New clsPPTEvent
Set PPTEvent.App = PowerPoint.Application
MsgBox "도형 잠금 감시가 시작되었습니다."
End Sub
클래스 모듈
'==========================================
'class module
Option Explicit
Public WithEvents App As Application
Private Sub App_WindowSelectionChange(ByVal Sel As Selection)
On Error Resume Next
Dim shp As Shape
Dim sld As Slide
If Sel.Type = ppSelectionShapes Then
For Each shp In Sel.ShapeRange
If shp.Tags("LOCKED") = "1" Then
'MsgBox "잠금된 도형은 선택할 수 없습니다.", vbExclamation
' 선택 강제 해제
App.ActiveWindow.Selection.Unselect
Exit Sub
End If
Next shp
End If
End Sub
방식은
1번 표준 모듈의 `MarkSelectedShapesAsLocked` 로 선택한 도형에 마킹을 한다.
2번 표준 모듈의 `StartLockMonitor` 로 모니터링을 시작한다.
해제를 원한다면,
1번 표준모듈의 `UnlockLockedShapesOnCurrentSlide` 또는 `UnlockAllLockedShapes` 를 사용한다.
선택된 슬라이드만 해제할지 전체를 해제할지에 따라 나뉜다.
작동은 하지만, 사용하려면, 적어도 선택/시작/해제 버튼이 3개나 필요하므로.. 그냥 냅두기로 한다.
이상 끝.
728x90