관련: 지식인

 

현재 파워포인트 365 구독버전만 도형의 잠금기능을 지원합니다.

비슷한 효과를 VBA로 구현할 수 있습니다.

구현 원리는 현재 선택한 도형을 슬라이드 마스터 레이아웃으로 복사해서 보내고 현재 도형은 숨김 처리함으로써 현재 슬라이드에는 현재 도형이 슬라이드마스터 레이아웃을 통해 보이면서 선택이나 편집을 할 수 없게 만듭니다.

 

==> 관련 지식인 답변

 

파워포인트에 오브젝트 락걸기 단축키 있나요?

파워포인트에 오브젝트 락걸기 단축키 있나요? 고수님들 답변주세요~~ㅠ

kin.naver.com

 

그런데 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

 

 

LockShape1.exe
0.84MB

 

LockShape1.ahk
0.00MB