2008년 11월 30일
파워포인트에서 애니메이션 재생이 끝났을 때 자동으로 슬라이드 전환하기
얼마 전에 간단한 프리젠테이션을 만들 일이 있어 파워포인트 2007로 작업을 하다가, 다음과 같은 상황에 직면했습니다. (아래는 상황을 다소 단순화시킨 것입니다.)
좀 더 구체적인 예를 들면, 이렇습니다:
파워포인트에서 기본적으로 지원하는, 슬라이드 전환 조건은 단 두 가지입니다. 마우스를 클릭할 때 전환, 혹은 특정 시간이 지난 후 자동 전환. 전자의 경우에는, 애니메이션 1이 끝난 후 한 번 더 마우스를 클릭해야 슬라이드가 전환되고 애니메이션 2가 재생됩니다. 후자의 경우에는, 언제 슬라이드를 전환해야 하는지 정확히 예측할 수 없으므로 여기서는 무의미한 방법입니다.
왜 "애니메이션 재생이 끝난 후 전환" 이런 걸 만들지 않았는지 아쉬운 대목이지만, 어쨌거나 어떻게 하면 슬라이드를 전환할 때마다 마우스를 두 번씩 클릭해야 하는 불편함 없이 이를 해결할 수 있을까 고민하다가, VBA를 사용하면 가능하지 않을까라는 생각을 하게 되었습니다. 대충 구글링을 해 본 결과, 이런 식으로 하면 될 것 같습니다:
우선, 새로운 클래스 모듈을 추가합니다. 이름은 EventClass 정도로 하고, 다음과 같이 구현합니다.
Public WithEvents TargetApp As Application
Private Sub TargetApp_SlideShowNextClick(ByVal Wn As SlideShowWindow, ByVal nEffect As Effect)
If Wn.View.Slide.SlideIndex = 1 And Wn.View.GetClickIndex = 1 Then
Wn.View.Next
ElseIf Wn.View.Slide.SlideIndex = 2 And Wn.View.GetClickIndex = 1 Then
Wn.View.Next
End If
End Sub
여기서 Wn.View.Slide.SlideIndex는 현재 재생 중인 슬라이드의 번호를 나타내며, 첫 번째 슬라이드가 1번입니다. Wn.View.GetClickIndex는 현재 애니메이션이 몇 단계 재생되었는지, 그러니까 간단히 말하자면, 슬라이드가 전환된 이후 몇 번 클릭되었는지를 나타냅니다. 처음 슬라이드가 전환된 상태는 0이고, 애니메이션이 한 단계 전환되면 1이고, 이런 식으로 진행됩니다. 즉, 위의 코드는 슬라이드 1에서 애니메이션이 1단계 재생되었을 때, 혹은 슬라이드 2에서 애니메이션이 1단계 재생되었을 때 슬라이드를 전환하라는 것을 의미합니다.
그 다음에는, 새로운 모듈을 하나 만들어 다음과 같은 코드를 추가합니다.
Public MyEventClass As New EventClass
Sub EnableAutoTransition()
Set MyEventClass.TargetApp = Application
End Sub
이제 EnableAutoTransition 매크로를 실행시키고 나면, 슬라이드 자동 전환이 이루어지는 상태에서 슬라이드 쇼를 진행할 수 있습니다.
다음 파일을 열어보시면 간단한 예제를 보실 수 있습니다. 파워포인트 2007용 파일이며, pptm은 매크로를 포함한 프리젠테이션의 확장자입니다. auto_transition.pptm
덧. 혹시나 저 파일에 매크로 바이러스가 걸려 있지 않을까 걱정하시는 분들께는, 바이러스 그런 거 없다는 데 제 전재산과 손모가지를 겁니......
- 슬라이드 1에서는 마우스를 클릭하면 애니메이션 1이 재생된다.
- 슬라이드 2에서는 슬라이드가 시작될 때 애니메이션 2가 재생된다.
- 애니메이션 1의 재생이 끝난 후, 바로 슬라이드가 전환되어, 애니메이션 2가 재생되도록 만들고 싶다.
좀 더 구체적인 예를 들면, 이렇습니다:
- 애니메이션 1은 화면에 있는 내용물들이 흐려지거나 날아가거나 하는 것이다.
- 애니메이션 2는 화면에 있는 내용물들이 밝아지거나 날아오거나 하는 것이다.
- 애니메이션 1과 애니메이션 2는 모두 본질적으로 슬라이드를 전환하는 과정에서 재생되어야 할 것들이다.
- 따라서 마우스 클릭 한 번으로, 애니메이션 1이 재생된 뒤, 슬라이드 2로 넘어가서, 애니메이션 2가 재생되면 좋을 것이다.
파워포인트에서 기본적으로 지원하는, 슬라이드 전환 조건은 단 두 가지입니다. 마우스를 클릭할 때 전환, 혹은 특정 시간이 지난 후 자동 전환. 전자의 경우에는, 애니메이션 1이 끝난 후 한 번 더 마우스를 클릭해야 슬라이드가 전환되고 애니메이션 2가 재생됩니다. 후자의 경우에는, 언제 슬라이드를 전환해야 하는지 정확히 예측할 수 없으므로 여기서는 무의미한 방법입니다.
왜 "애니메이션 재생이 끝난 후 전환" 이런 걸 만들지 않았는지 아쉬운 대목이지만, 어쨌거나 어떻게 하면 슬라이드를 전환할 때마다 마우스를 두 번씩 클릭해야 하는 불편함 없이 이를 해결할 수 있을까 고민하다가, VBA를 사용하면 가능하지 않을까라는 생각을 하게 되었습니다. 대충 구글링을 해 본 결과, 이런 식으로 하면 될 것 같습니다:
우선, 새로운 클래스 모듈을 추가합니다. 이름은 EventClass 정도로 하고, 다음과 같이 구현합니다.
Public WithEvents TargetApp As Application
Private Sub TargetApp_SlideShowNextClick(ByVal Wn As SlideShowWindow, ByVal nEffect As Effect)
If Wn.View.Slide.SlideIndex = 1 And Wn.View.GetClickIndex = 1 Then
Wn.View.Next
ElseIf Wn.View.Slide.SlideIndex = 2 And Wn.View.GetClickIndex = 1 Then
Wn.View.Next
End If
End Sub
여기서 Wn.View.Slide.SlideIndex는 현재 재생 중인 슬라이드의 번호를 나타내며, 첫 번째 슬라이드가 1번입니다. Wn.View.GetClickIndex는 현재 애니메이션이 몇 단계 재생되었는지, 그러니까 간단히 말하자면, 슬라이드가 전환된 이후 몇 번 클릭되었는지를 나타냅니다. 처음 슬라이드가 전환된 상태는 0이고, 애니메이션이 한 단계 전환되면 1이고, 이런 식으로 진행됩니다. 즉, 위의 코드는 슬라이드 1에서 애니메이션이 1단계 재생되었을 때, 혹은 슬라이드 2에서 애니메이션이 1단계 재생되었을 때 슬라이드를 전환하라는 것을 의미합니다.
그 다음에는, 새로운 모듈을 하나 만들어 다음과 같은 코드를 추가합니다.
Public MyEventClass As New EventClass
Sub EnableAutoTransition()
Set MyEventClass.TargetApp = Application
End Sub
이제 EnableAutoTransition 매크로를 실행시키고 나면, 슬라이드 자동 전환이 이루어지는 상태에서 슬라이드 쇼를 진행할 수 있습니다.
다음 파일을 열어보시면 간단한 예제를 보실 수 있습니다. 파워포인트 2007용 파일이며, pptm은 매크로를 포함한 프리젠테이션의 확장자입니다. auto_transition.pptm
덧. 혹시나 저 파일에 매크로 바이러스가 걸려 있지 않을까 걱정하시는 분들께는, 바이러스 그런 거 없다는 데 제 전재산과 손모가지를 겁니......
# by | 2008/11/30 04:56 | 작업실 | 트랙백 | 덧글(0)




☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]