슬라이드쇼 설정에서 ESC 를 누를 때까지 반복으로 설정해 놓으면 1슬라이드에서

슬라이드쇼가 다시 시작하므로 음악이 항상 새로 시작되게 되어 있습니다.

참고로 '전환'메뉴에서 wav 파일을 반복시켜도 마찬가지입니다.

m3u 플레이리스트에 mp3파일을 반복 재생되게 해당 mp3를 반복해서 넣는 방법도 시도할 수 있으나

2010에서는 되는데 365 등에서는 m3u 플레이리스트를 불러오지 못하네요.

가능하게 하려면 외부음악 재생프로그램이나 VBA를 이용해서 재생해야겠습니다.

(아래 1번 방법 보다는 2번 방법이 좀 더 간단하고 오디오 파일을 포함해서 저장할 수 있어 추천합니다.)

 

 

1. 첫번째 방법은 mciSendString이라는 외부 API를 이용한 방법입니다.

 

VBA를 이용하려면 아래 코드와 첨부 압축 파일 속의 AutoRepeat1.pptm 첨부파일을 참고하세요.

mciSendString이라는 API를 이용해서 슬라이드쇼를 하는 동안 계속 bensound1.mp3를 반복 재생합니다.

Alt+F11 창에 삽입 > 모듈을 추가한 후에 아래 코드를 붙여 넣습니다.

 

Option Explicit

#If VBA7 Then
    Private Declare PtrSafe Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" ( _
        ByVal lpstrCommand As String, _
        ByVal lpstrReturnString As String, _
        ByVal uReturnLength As Long, _
        ByVal hwndCallback As Long) As Long
#Else
    Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" _
        ByVal lpstrCommand As String, _
        ByVal lpstrReturnString As String, _
        ByVal uReturnLength As Long, _
        ByVal hwndCallback As Long) As Long
#End If

Public Playing As Boolean

Sub PlayAudio()

    Dim FileName As String
  
    '(주의) 긴 오디오 파일명은 mciSendString 명령어에 포함시킬 때 반드시 따옴표("")로 감쌀 것!
    FileName = ActivePresentation.Path & "\bensound1.mp3"
 
    mciSendString "close all", vbNullString, 0, 0
    mciSendString "Open """ & FileName & """ alias SoundFile", vbNullString, 0, 0
    mciSendString "Play SoundFile Repeat", vbNullString, 0, 0
    Playing = True
    
End Sub

Sub StopAudio()

    mciSendString "Stop SoundFile", vbNullString, 0, 0
    mciSendString "Close SoundFile", vbNullString, 0, 0
    Playing = False
    
End Sub

Sub onSlideShowTerminate(SSW As SlideShowWindow)
    
    StopAudio
     
End Sub

Sub onSlideShowPageChange(SSW As SlideShowWindow)

    If Not Playing Then
 
        If SSW.View.CurrentShowPosition = 1 Then PlayAudio
        
    End If
    
End Sub

 

주의1) bensound1.mp3파일이 현재 폴더에 있어야 합니다.

​주의2) 2010에서는 이상 없으나 2016이나 365 등 최신 버전에서는 mciSendString으로 오디오 파일을 불러올 때 오디오파일의 경로를 정확히 추가해야 오디오를 제대로 재생합니다. 파일 경로가 없으면 오디오파일을 불러오지 못합니다. 또한 긴 폴더명과 파일명은 반드시 처음과 끝을 쌍따옴표 2개("")로 묶어주어야 합니다.

 

pptm 파일은 다운로드 받은 경우 파일 속성에서 차단해제 > 확인을 하고 나서

파일을 열 때 매크로 컨텐트를 허용해야 매크로가 작동합니다.

매크로 작동 원리는

현재 1슬라이드이고 재생중이 아니면 현재 폴더의 bensound1.mp3를 시스템 미디어플레이어로 반복 재생합니다. 슬라이드쇼가 한 바퀴 돌고 1슬라이드에 다시 와도 이미 재생중이므로 다시 재생을 시작하지 않습니다.

참고:

https://kin.naver.com/qna/detail.naver?d1id=1&dirId=102020103&docId=441487287#answer2

 

 

 

 

2. 두 번째 방법은 VBA를 이용하지만 좀 더 간단한 방법입니다.

빈 1슬라이드에 음악을 삽입하고 2슬라이드로 자동 전환되게 한 다음

마지막 빈 슬라이드로 이동하면 음악이 삽입되었던 1슬라이드가 아니라

2슬라이드로 가게 하는 트릭을 이용합니다.

1슬라이드 앞에 빈 슬라이드를 삽입하고 전환 > 0 초후 자동 전환을 설정합니다.

그리고 이 자동 전환 슬라이드에 오디오를 삽입하고 백그라운드 재생 혹은 자동실행, 반복재생을 켭니다.

(Sample5Auto.pptm 샘플 파일은 확인용으로 전환 시간을 좀 더 늘려놓았습니다.)

나머지 슬라이드들은 원하는 시간만큼 자동전환을 시킵니다.

마지막에도 빈 슬라이드를 하나 삽입하고 0초후 자동전환에 체크합니다.

alt-F11 창을 켜서 삽입 > 모듈 추가한 후에

아래 코드를 붙여넣습니다.

 

Sub OnSlideShowPageChange(SSW As SlideShowWindow)

    Dim pres As Presentation
    Dim sld As Slide
    
    Set sld = SSW.View.Slide
    Set pres = SSW.Presentation
    
    If sld.SlideIndex = pres.Slides.Count Then SSW.View.GotoSlide 2, msoTrue
    
End Sub

 

맨 마지막 빈 슬라이드에 다다르면 자동으로 2슬라이드로 가도록 하는 코드입니다.

결과적으로 1슬라이드(빈 슬라이드)에서 음악이 재생 시작하고

계속 쇼를 진행하다보면 마지막 빈 슬라이드로 이동하는데 그러자 마자

1슬라이드가 아닌 2슬라이드로 이동하게 해서

음악이 다시 시작하는 것을 방지하는 것입니다.

첨부샘플 파일 참고하세요.

Bensound.com 의 무료 음악이 사용되었습니다.

첨부파일은 다운로드 받고 나서 파일속성에서 '차단해제' 체크 > 확인 한 후 열어서 반드시 매크로컨텐트를 허용하고 슬라이드쇼를 시작해야 합니다.

참고: https://kin.naver.com/qna/detail.naver?dirId=102020103&docId=458578383&answerNo=2&qb=7J2M7JWFIOuwmOuztQ==

 

첨부파일:

AutoRepeat.zip
6.04MB