VBA로 이동경로 특히 직선이나 간단한 도형 애니메이션을 추가하는 문법 3가지
1. 일단 아래로 내려가는 직선 애니메이션을 넣고 VML 경로를 수정하는 방법
Sub AddVML()
Dim sld As Slide
Dim shp As Shape
Dim eft As Effect
Dim ani As AnimationBehavior
Set shp = ActiveWindow.Selection.ShapeRange(1)
Set sld = shp.Parent
Set eft = sld.TimeLine.MainSequence.AddEffect(shp, msoAnimEffectPathDown, , msoAnimTriggerAfterPrevious)
eft.Timing.Duration = 0.25
eft.Timing.SmoothStart = 0
eft.Timing.SmoothEnd = 0
Set ani = eft.Behaviors.Add(msoAnimTypeMotion)
'eft.Behaviors(1).MotionEffect.Path = "M 0 0 L 0.5 0"
eft.Behaviors(1).MotionEffect.Path = "M 0 0 L 0.25 0 L 0.25 0.25 L 0 0.25 L 0 0 Z"
End Sub
2. 사용자지정 애니메이션을 추가하고 VML을 수정하는 방법
Sub AddCustomVML()
Dim sld As Slide
Dim shp As Shape
Dim eft As Effect
Dim ani As AnimationBehavior
Set shp = ActiveWindow.Selection.ShapeRange(1)
Set sld = shp.Parent
Set eft = sld.TimeLine.MainSequence.AddEffect(shp, msoAnimEffectCustom, , msoAnimTriggerAfterPrevious)
eft.Timing.Duration = 0.25
eft.Timing.SmoothStart = 0
eft.Timing.SmoothEnd = 0
Set ani = eft.Behaviors.Add(msoAnimTypeMotion)
ani.MotionEffect.Path = "M 0 0 L 0.25 0 L 0.25 0.25 L 0 0.25 L 0 0 Z"
'remove hidden behavior
eft.Behaviors(eft.Behaviors.Count - 1).Delete
'Debug.Print eft.Behaviors.Count
End Sub
이 때는 숨겨진 behavior를 삭제해줘야 이동경로도 제대로 보이고 동작도 제대로 시작합니다.
3. VML이 아니라 간단한 직선 이동을 추가하는 방법
Sub AddMotion()
Dim sld As Slide
Dim shp As Shape
Dim eft As Effect
Dim ani As AnimationBehavior
Set shp = ActiveWindow.Selection.ShapeRange(1)
Set sld = shp.Parent
Set eft = sld.TimeLine.MainSequence.AddEffect(shp, msoAnimEffectCustom, , msoAnimTriggerAfterPrevious)
eft.Timing.Duration = 0.5
'eft.Timing.SmoothStart = 0
'eft.Timing.SmoothEnd = 0
Set ani = eft.Behaviors.Add(msoAnimTypeMotion)
With ani.MotionEffect
.FromX = 0
.FromY = 0
.ToX = 50 '0~100
.ToY = 0
End With
eft.Behaviors(eft.Behaviors.Count - 1).Delete 'remove hidden behavior
'Debug.Print eft.Behaviors(eft.Behaviors.Count).MotionEffect.Path
End Sub
이 때도 숨겨진 behavior를 삭제해줘야 제대로 작동합니다.
세가지 방법의 차이점 시연입니다.
샘플 파일 첨부합니다.
'PPT+VBA' 카테고리의 다른 글
VBA로 메모 일괄 처리하기 (2) | 2022.09.28 |
---|---|
발표자 보기에서 여러 개의 슬라이드 미리 보기 (2) | 2022.09.12 |
개체 간격 자동으로 배치하기 (0) | 2022.09.07 |
원둘레에 여러개의 원 그리기 (0) | 2022.09.05 |
연결된 차트의 시트변경시 연결 자동 복구 (0) | 2022.08.20 |
PPT의 표(테이블)를 엑셀시트에 일괄 복사 (0) | 2022.08.13 |
도형병합(교차)를 이용한 두 도형의 충돌체크 (0) | 2022.08.12 |
그룹도형, 차트, 스마트아트, 표 등의 텍스트 일괄 변경 (0) | 2022.08.08 |
최근댓글