사진 여러장이 넘어가게 할 때 두 가지 방법이 있습니다.
1. 한 슬라이드안에 여러 사진을 넣어두고 차례로 애니메이션으로 나타나게 하는 것과
2. 각 슬라이드마다 사진을 넣어서 슬라이드가 자동 전환이 되게 하는 방법 입니다.
2번 방법은 삽입 > 사진앨범 기능을 이용하면 자동으로 여러장의 사진이 각 슬라이드에 자동으로 삽입이 됩니다.
그리고 전환에서 모핑 전환을 적용하면 좋습니다.
그런데 사진을 띄울 때 랜덤으로 순서가 섞이게 하려면 어느 방법이든 VBA를 이용해야 합니다.
2번 방법에서 슬라이드 순서를 섞는 것은 기존 답변( 슬라이드 섞기 , 랜덤슬라이드쇼 ) 을 참고해주세요.
1번 방법은 손이 더 가는 방법이지만 2번방식인 전체 슬라이드 전환과 달리 기존 화면에서 새로운 사진만 나타나게 할 수 있는 장점이 있습니다.
VBA를 이용해서 1번 방법으로 자동으로 순서가 섞여서 사진이 부드럽게 나타나고 사라지도록 해보았습니다.
첨부파일을 다운로드 하고 파일 속성에서 '차단해제'후 적용확인후 매크로 허용해서 열어보세요.
사진들이 들어 있는 슬라이드는 1번 슬라이드입니다.
1번 슬라이드에 사진을 원하는 만큼 삽입하면 됩니다.
사진의 크기가 같지 않아도 됩니다.
사진을 섞을 회수는 지정이 가능합니다.
현재 10회인데 1슬라이드의 10개의 사진을 10회 랜덤하게 섞게 됩니다.
슬라이드쇼를 실행하면
1슬라이드로 이동하면
1슬라이드의 모든 사진의 목록을 정리해서
순서를 섞어서 지정된 회수만큼(10회)
나타나기(밝기변환) 효과와 사라지기 효과를 자동으로 추가해줍니다.
슬라이드쇼 설정이 ESC를 누를 때까지 반복상태이고 각 슬라이드는 0초 후 전환이라서
슬라이드쇼는 계속 반복되고 1슬라이드로 이동하면 다시 또 사진 애니메이션 순서가 섞이게 됩니다.
실행화면:
스톡이미지를 이용한 랜덤 사진 슬라이드쇼:
Option Explicit
Const TargetSlide As Long = 1 '사진 슬라이드 번호
Const RepeatCount As Long = 2 '사진 섞을 횟수
Sub AddRandomPictureAnimation()
Dim sld As Slide
Dim shp As Shape
Dim eft As Effect
Dim i As Integer, c As Integer, r As Integer, rep As Integer
Dim Pic() As Long, t As Long
'대상 슬라이드
Set sld = ActivePresentation.Slides(TargetSlide)
With sld.TimeLine.MainSequence
'기존 그림에 대한 애니메이션 삭제
For i = .Count To 1 Step -1
If .Item(i).Shape.Type = msoPicture Then
.Item(i).Delete
End If
Next i
'그림 개체 목록 구하기
For Each shp In sld.Shapes
If shp.Type = msoPicture Then
c = c + 1
ReDim Preserve Pic(1 To c)
Pic(c) = shp.ZOrderPosition
End If
Next shp
'애니메이션 추가
For rep = 1 To RepeatCount '반복하고 싶은 회수
'개체 순서 섞기
For i = 1 To c
r = Int(Rnd * c) + 1
t = Pic(r)
Pic(r) = Pic(i)
Pic(i) = t
Next i
For i = 1 To c
'밝기변화(나타나기) 효과
Set eft = .AddEffect(sld.Shapes(Pic(i)), msoAnimEffectFade, , msoAnimTriggerWithPrevious)
eft.Timing.Duration = 2
If rep > 1 Or i > 1 Then eft.Timing.TriggerDelayTime = 1.5 '지연시간=이전 사진보는 시간
'흐려지면서 사라지기 효과 추가
Set eft = .AddEffect(sld.Shapes(Pic(i)), msoAnimEffectFade, , msoAnimTriggerAfterPrevious)
eft.Exit = msoTrue
eft.Timing.Duration = 1
eft.Timing.TriggerDelayTime = 1.5 '지연시간=이전 사진보는 시간
Next i
Next rep
End With
End Sub
Sub onSlideShowPageChange(SSW As SlideShowWindow)
'1슬라이드이면 사진 순서 섞어서 애니메이션 추가
If SSW.View.Slide.SlideIndex = TargetSlide Then
AddRandomPictureAnimation
End If
End Sub
샘플 파일 첨부합니다.
1슬라이드에 사진들만 추가하고 쇼를 시작하기만 하면 됩니다.
코드에 1슬라이드에서 사진을 반복할 회수나 나타내기나 사라지기할 애니메이션 시간 정도를 수정할 수 있습니다.
'PPT+VBA' 카테고리의 다른 글
엑셀데이터 연동 PPT 슬라이드 만들기 예제와 구글 TTS 발음 다운로드 (0) | 2022.12.02 |
---|---|
지도 도형 내부를 사각형으로 자동채우기 (0) | 2022.11.21 |
PPT 시작할 때 매크로 파일들 자동으로 열기 (0) | 2022.11.16 |
오디오 Fade Out 효과 구현 (0) | 2022.11.13 |
PPT 합치기 (1) | 2022.10.31 |
VBA로 메모 일괄 처리하기 (2) | 2022.09.28 |
발표자 보기에서 여러 개의 슬라이드 미리 보기 (2) | 2022.09.12 |
개체 간격 자동으로 배치하기 (0) | 2022.09.07 |
최근댓글