파워포인트 파일을 열었을 때 마지막 페이지가 북마크처럼 뜨긴 하지만 마지막 페이지로 이동하는 기능은 없어서
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값으로 저장됩니다.
샘플 파일: (다운로드 후 파일속성에 차단해제, 파일 열 때 매크로 허용 후 닫았다가 다시 열기)
참고:
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
'PPT+VBA' 카테고리의 다른 글
새해 맞이 남은 시간 카운터(타이머)(+남은 시간 계산시 주의할 점) (0) | 2024.12.14 |
---|---|
[BombGame]클릭했을 때 회전하면서 사라지는 퀴즈게임 자동으로 생성하기 (0) | 2024.11.25 |
빙고판 생성 (및 애니메이션 추가) (1) | 2024.11.20 |
슬라이드 썸네일 크기와 여백을 지정해서 유인물 인쇄 (0) | 2024.10.29 |
구글 스트리트 뷰를 슬라이드에 삽입하기 (1) | 2024.10.13 |
텍스트 상자를 단어 단위로 분리하기 (0) | 2024.10.01 |
애니메이션 점수판 자동 생성 (2) | 2024.09.18 |
슬라이드 기반 데이터베이스(DB) 관리 (2) | 2024.09.12 |
최근댓글