관련: 지식인

요즘에는 pptx로 저장하면 기본으로 오디오가 pptx파일내에 포함되어 저장됩니다.

과거 형식인 .ppt 로 저장하거나 pptx에서도 삽입 버튼에서 파일에 연결을 선택하면 오디오 파일은 포함되지 않고 링크로 삽입됩니다.

 

이렇게 연결로 삽입하면 pptx파일을 다른 곳으로 옮기게 되면

경로가 맞지 않아 파일 재생에 문제가 생기고 오류 메시지가 뜹니다.

이럴 때 미디어의 연결 링크를 일괄로 수정하는 방법을 안내합니다.

 

1. 연결 편집

일단 파일 > 정보 화면 에서 오른쪽 아래에 파일 연결 편집 메뉴가 있습니다.

이걸 눌러서 파일들의 위치가 어떻게 설정되어 있는지 보시고

똑같은 폴더에 해당 파일들을 옮기시면 재생이 될 겁니다.

원본 변경 버튼을 눌러 하나씩 변경할 수도 있습니다.

2. VBA이용 방법

VBA로 연결로 삽입된 모든 미디어에 대해

폴더 경로를 제거하고 pptx파일이 있는 현재 폴더로 변경하고 링크를 업데이트하도록

할 수 있습니다.

Alt+F11 누르고 삽입 > 모듈을 추가한 다음 아래 코드를 복사해서 붙여넣습니다.

그 다음 F5로 매크로를 실행하면 됩니다.

 

 

Sub RemovePathFromMediaLink()

    Dim prs As Presentation
    Dim sld As Slide, shp As Shape
    
    Set prs = ActivePresentation
    
    For Each sld In prs.Slides
        For Each shp In sld.Shapes
            If shp.Type = msoMedia Then
                If shp.MediaFormat.IsLinked Then
                    Debug.Print "Slide #" & sld.SlideIndex
                    sname = shp.LinkFormat.SourceFullName
                    Debug.Print sname
                    sname = Mid(sname, InStrRev(sname, "\") + 1)
                    shp.LinkFormat.SourceFullName = sname
                    shp.LinkFormat.Update
                    Debug.Print "==> " & shp.LinkFormat.SourceFullName
                End If
            End If
        Next shp
    Next sld
    
End Sub

 

 

위 코드는 C:\Users\user1\Downloads\mute04.mp3 같은 경로를 mute04.mp3 로 만들어줍니다.

그래서 pptx파일이 있는 현재 폴더에 해당 파일이 있으면 재생이 가능해집니다.

 

아니면 sname = Replace(sname, "C:\Users\User1", "C:\Users\User2") 같은 방식으로 특정 경로를 다른 경로로 수정해도 됩니다.

 

 

3. XML 프레젠테이션으로 저장 후 경로 일괄 바꾸기

파일 > 다른이름으로 저장에서 Powerpoint XML 프레젠테이션으로 저장합니다.

저장한 XML 파일을 텍스트 편집기에서 열어서

텍스트 찾아 바꾸기 기능을 이용해서 C:\Users\user1\Desktop\와 같은 경로를 C:\Users\user2\Desktop\ 로 변경합니다.

경로 이름이 조금이라도 틀리면 오류가 발생하고 경로가 한 개가 아니므로

주의해서 정확히 입력해서 교체합니다.

저장한 XML 파일을 다시 파워포인트에서 불러와서 다시 .pptx 혹은 .ppt로 저장합니다.

 

 

4. 연결로 삽입된 링크 연결해제(파일에 포함) 시키기

 

연결로 삽입된 미디어들을 pptx파일에 포함시키도록 일괄로 바꾸는 코드입니다.

(Alt+F11 누르고 삽입 > 모듈을 추가한 다음 아래 코드를 복사해서 붙여넣습니다.

그 다음 F5로 매크로를 실행)

Sub reEmbedLinkedMedia()

    Dim prs As Presentation
    Dim sld As Slide, shp As Shape
    
    Set prs = ActivePresentation
    
    For Each sld In prs.Slides
        For Each shp In sld.Shapes
            If shp.Type = msoMedia Then
                If shp.MediaFormat.IsLinked Then
                    Debug.Print "Slide #" & sld.SlideIndex
                    sname = shp.LinkFormat.SourceFullName
                    Debug.Print sname
                    shp.LinkFormat.BreakLink
                    Debug.Print "Embedding result ==> " & shp.MediaFormat.IsEmbedded
                End If
            End If
        Next shp
    Next sld
    
End Sub