관련: 지식인
현재 파워포인트 365 구독버전만 도형의 잠금기능을 지원합니다.
비슷한 효과를 VBA로 구현할 수 있습니다.
구현 원리는 현재 선택한 도형을 슬라이드 마스터 레이아웃으로 복사해서 보내고 현재 도형은 숨김 처리함으로써 현재 슬라이드에는 현재 도형이 슬라이드마스터 레이아웃을 통해 보이면서 선택이나 편집을 할 수 없게 만듭니다.
==> 관련 지식인 답변
그런데 VBA는 매크로를 허용해야 하고 단축키를 지정하는 것도 Alt+숫자키를 사용해야 하는 불편함이 있습니다.
그래서 이 기능을 AutoHotkey로 변환해서 만들어보았습니다.
VBA와 달리 실행파일만 실행하고 F3과 F4로 개체잠금효과를 적용/해제할 수 있습니다.
첨부한 LockShape1.exe를 실행하세요.
확인을 누르면 트레이로 최소화됩니다.
파워포인트 슬라이드 편집시 선택한 도형이나 그림, 표를 잠그고 싶을 때
F3키를 누르면 잠금효과가 구현됩니다.
(다시 말해 현재 도형을 슬라이드 마스터로 보내고 현재 도형은 숨깁니다.)
계속 누르면 선택된 도형이 잠금효과가 적용됩니다.
F4키를 누르면 모든 잠긴 도형이 효과가 풀리고 원래대로 돌아옵니다.
(슬라이드 마스터 레이아웃에서 삭제되고 원본은 숨김을 해제합니다.)
Win+X를 누르면 종료합니다.
실제 실행 예제 화면입니다.
365구독버전의 잠금 기능은 도형을 잠궈도 도형을 선택할 수 있고
삭제하거나 도형서식을 변경할 수 있지만
이 경우는 도형이 숨겨지기 때문에 선택자체가 안되어서 다른 작업을 아예 할 수 없다는 점이 다릅니다.
exe파일과 ahk 스크립트를 첨부합니다.
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
CoordMode, Pixel, Screen
#SingleInstance
MsgBox, 0x40, LockShape, Press <F3> to lock the current shape by sending it to master layout and <F4> to unlock it.`n`nPress <Win+x> to quit.
Menu, Tray, Icon, shell32.dll, 153
Menu, Tray, Tip, <F3> to lock <F4> to unlock [Win+X]: Exit
Menu, Tray, NoStandard
Menu, Tray, Add, Exit, ExitMenu
return
$F3::
ppt:=ComObjActive("PowerPoint.Application")
ppt.Visible := True
IfWinActive, ahk_exe POWERPNT.EXE
{
try {
shp := ppt.ActiveWindow.Selection.ShapeRange(1)
}
catch e {
MsgBox 도형을 먼저 선택하세요.
}
sld := shp.Parent
shp.Copy
shp.Visible := false
;copy the shape and send it to the master layout
layout := sld.CustomLayout
shp1 := layout.Shapes.Paste(1)
shp1.Name := "Locked_" + shp.Name
ppt := ""
}
return
$F4::
ppt:=ComObjActive("PowerPoint.Application")
ppt.Visible := True
IfWinActive, ahk_exe POWERPNT.EXE
{
;Select an image
sld := ppt.ActiveWindow.Selection.SlideRange(1)
layout := sld.CustomLayout
c := 0
i := layout.Shapes.Count
Loop %i%
{
if ( InStr(layout.Shapes(i).Name, "Locked_") > 0 ) {
sld.Shapes(SubStr(layout.Shapes(i).Name, 8)).Visible := true
layout.Shapes(i).Delete
c++
}
i--
}
ppt := ""
MsgBox %c% 개의 개체 복구 완료!
}
return
ExitMenu:
#x::
ExitApp
'AutoHotKey' 카테고리의 다른 글
발표자 보기 도구 창에서 '여러 슬라이드 보기' 유지하기 (0) | 2023.11.22 |
---|---|
파워포인트 원하는 슬라이드로 바로 이동하기 (0) | 2023.07.02 |
파워포인트 다른 그림으로 바꾸기, 2가지 방법 (0) | 2023.07.02 |
표(셀)에 맞게 사진 삽입하기 (0) | 2023.03.16 |
현재 셀에 일정 여백을 두고 정확히 그림 삽입하기 (2) | 2023.02.26 |
PPT 도형 붙이기 (0) | 2023.02.11 |
두 개체 사이 거리를 다른 개체에 복사 적용 (0) | 2022.12.09 |
텍스트 상자 자동으로 들여쓰기/내어쓰기(Shift-Tab) (2) | 2022.12.02 |
최근댓글