파워포인트 파일을 열었을 때 마지막 페이지가 북마크처럼 뜨긴 하지만 마지막 페이지로 이동하는 기능은 없어서

VBA를 이용해야겠습니다.

페이지를 이동하는 코드는 아래처럼 간단합니다.

 

Sub onLoad()

    ActiveWindow.View.GotoSlide 페이지번호숫자
    
End Sub

 

현재 슬라이드 위치를 태그에 저장하는 코드는 아래와 같습니다.

 
Sub SaveTag()

    ActivePresentation.Tags.Add "LastPage", ActiveWindow.View.Slide.SlideIndex
    
End Sub

 

 

더 자세한 내용은 아래 클래스와 모듈 코드를 참고하세요.

직접 입력하기에는 조금 복잡할 수 있으니

첨부파일 다운로드 받아서 파일 속성에서 '차단해제'하고 매크로를 허용한 다음

다시 열어서 테스트해보시고 잘 작동한다면

이 파일에 자신의 슬라이드내용을 붙여넣어서 이용하시기 바랍니다.

최초 실행시에 매크로를 허용한 다음 파일을 닫고 다시 열어야 파일 저장 이벤트가 감지됩니다.

 

참고: 파워포인트에서 감시할 수 있는 이벤트들

http://youpresent.co.uk/powerpoint-application-events-in-vba/

Class1 의 코드:

프레젠테이션이 열리면 저장된 페이지로 이동하고

프리젠테이션이 저장될 때 현재 페이지 위치를 태그에 저장하고 파일을 저장하도록 합니다.

 

Option Explicit

Public WithEvents App As Application

Sub App_PresentationOpen(ByVal oPres As Presentation)
    
   Module1.MoveToLastLocation oPres
    
End Sub

Sub App_PresentationSave(ByVal oPres As Presentation)
    
    Module1.SaveLastLocation oPres
    oPres.Save
    
End Sub

Sub App_PresentationClose(ByVal oPres As Presentation)

    'Module1.SaveLastLocation oPres
    
End Sub

 

 

Module1의 코드:

onLoad 는 파일이 열리면 자동실행됩니다.

(CustomUI.XML 에서 onLoad를 불러오도록 설정되어 있습니다.)

저장된 페이지로 이동하고

클래스를 초기화해서 파일열기와 저장 이벤트를 감시하게 합니다.

MoveToLastLocation 은 저장된 페이지로 이동합니다.

SaveLastLocation 은 현재 페이지 위치를 LastPage태그에 저장합니다.

 

'// Remember the last slide location and goto the slide when opened

Option Explicit

Dim Cls As New Class1

Sub onLoad()

    MoveToLastLocation ActivePresentation
    Set Cls.App = Application
    
End Sub

Sub MoveToLastLocation(prs As Presentation)
    Dim lastpage As Long
    lastpage = CLng(prs.Tags("LastPage"))
    If lastpage > 0 And lastpage < prs.Slides.Count Then _
        prs.Application.ActiveWindow.View.GotoSlide lastpage

End Sub

Private Sub test()
    SaveLastLocation ActivePresentation
End Sub
Private Sub test_viewTag()
    MsgBox ActivePresentation.Tags("LastPage")
End Sub

Sub SaveLastLocation(prs As Presentation)
    
    Dim sld As Slide
    Dim i As Integer
    
    On Error Resume Next
    Set sld = prs.Application.ActiveWindow.View.Slide
    On Error GoTo 0
    If sld Is Nothing Then Exit Sub     'if no slide is selected, just exit
    prs.Tags.Add "LastPage", sld.SlideIndex 'save the current location
     
End Sub

 

 

참고로 Tag는 아래처럼 pptx 파일내부에 ppt/tags 폴더에 tag1.xml 에 LASTPAGE 태그의 Value값으로 저장됩니다.

 

 샘플 파일: (다운로드 후 파일속성에 차단해제, 파일 열 때 매크로 허용 후 닫았다가 다시 열기)

RememberLastLocation1.pptm
0.10MB

 

 

참고:

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

 

https://kin.naver.com/qna/detail.naver?d1id=1&dirId=102020103&docId=477317840&answerNo=2