PPT+VBA
개체 잠금 효과 구현
쵸코난
2021. 10. 7. 23:38
최근 365 구독버전 2104(빌드 139.6.20000 간편실행) 베타채널 이상에서는
개체 잠금 기능을 지원합니다.
Alt-F10 개체 선택 창에서 자물쇠 모양을 누르거나
마우스 우클릭 후 잠금을 선택합니다.
참고: https://m.blog.naver.com/radiobj5/222270903352
365하위버전이나 2019이하 버전에서는 아직 지원하지 않기 때문에
개체에 잠금효과를 주려면 개체(도형)를 슬라이드 마스터로 보내는 번거로운 방법을 써야만 합니다.
그래서 이 과정을 VBA로 자동화 시키고 빠른실행에 추가해서 Alt+숫자키로 빠르게 도형을 잠그고 풀 수 있도록 해보았습니다.
VBA로 개체 잠그고 풀기
Lock 매크로는 현재 선택된 도형을 감추고 이 도형을 현재 슬라이드 마스터 레이아웃에 복사합니다.
선택할 수는 없는 잠금 효과를 낼 수 있습니다.
Unlock 매크로는 현재 슬라이드 마스터에 있는 모든 잠긴 도형을 삭제하고 현재 슬라이드에 숨겨진 도형들을 다시 보이게 처리합니다.
더보기
Sub Lock_SendToMaster()
Dim sld As Slide
Dim shp As Shape
Dim layout As CustomLayout
On Error GoTo oops
Set shp = ActiveWindow.Selection.ShapeRange(1)
Set sld = shp.Parent
'현재 도형은 복사/숨기기
shp.Copy
shp.Visible = msoFalse
'현재 슬라이드마스터 레이아웃에 복제
Set layout = sld.CustomLayout
With layout.Shapes.Paste(1)
.Name = "Locked_" & shp.Name
End With
oops:
If Err Then MsgBox Err.Description
End Sub
Sub UnLock_RecoverFromMaster()
Dim sld As Slide
Dim shp As Shape
Dim i As Long, c As Long
Dim layout As CustomLayout
On Error GoTo oops
Set sld = ActiveWindow.Selection.SlideRange(1)
'현재 슬라이드마스터 레이아웃에서 복사된 도형 찾기
Set layout = sld.CustomLayout
For i = layout.Shapes.Count To 1 Step -1
Set shp = layout.Shapes(i)
If shp.Name Like "Locked_*" Then
sld.Shapes(Mid(shp.Name, 8)).Visible = msoTrue
shp.Delete
c = c + 1
End If
Next i
MsgBox c & "개의 개체가 복구되었습니다.", vbInformation
oops:
If Err Then MsgBox Err.Description
End Sub
샘플파일 참고하세요.
그밖의 방법으로는 프리젠테이션의 xml 코드에 Lock관련한 태그를 적어주는 방법도 있긴 합니다.