2017-12-20 2 views
0

슬라이드의 여러 셰이프를 선택하고 선택한 모든 셰이프에서 매크로를 실행하고 싶습니다. 예를 들어, 도형의 애니메이션 지연 시간을 주어진 값만큼 늘리고 싶습니다. 참고 : 일부 도형에는 애니메이션이 두 개 이상있을 수 있습니다.셰이프를 선택하여 PowerPoint VBA 스크립트를 적용하려면 어떻게해야합니까?

지금까지 다음 코드가 있습니다. 그것은 트릭을 수행하지만 현재 슬라이드의 모든 모양에 적용됩니다.

Sub ActiveSlideShapes_DelayInc() 
    Dim osld As Slide 
    Dim i  As Long 
    Dim a  As Integer 
    Dim oeff As Effect 
    Const sngDel As Single = 0.1 

    Set osld = ActiveWindow.Selection.SlideRange(1) 

    For i = osld.TimeLine.MainSequence.Count To 1 Step -1 
     Set oeff = osld.TimeLine.MainSequence(i) 
     With oeff 
      .Timing.TriggerDelayTime = .Timing.TriggerDelayTime + sngDel 
     End With 
    Next i 
End Sub 

다른 해결책은 도형 대신 실제 TimeLine 요소를 선택하는 것일 수 있습니다. 그런 다음 선택한 애니메이션에 대해서만 "다음 ..."루프를 수행하십시오. 특정 모양에 여러 개의 다른 애니메이션이 붙어있는 경우이 방법이보다 세련된 솔루션이 될 것입니다. 가능한가요?

답변

0

selection.shaperange를 사용해보십시오. 선택한 각 모양을 반복해야합니다.

For Each Shp In Selection.ShapeRange 
With Shp 
      .Timing.TriggerDelayTime = .Timing.TriggerDelayTime + sngDel 
     End With 
Next 
+0

이렇게하면 "메서드 또는 데이터 멤버를 찾을 수 없습니다."라는 컴파일 오류가 발생합니다. 두 번째 ". 타이밍"이 오류로 강조 표시됩니다. (이상하게도 ... ".Timing"의 첫 번째 인스턴스에서 오류가 발생할 것으로 예상되는 경우). – Wombat

+0

sngDel은 상수이기 때문에 코드에서 0.1로 바꾸시겠습니까? – mooseman

+0

셰이프 개체에는 오류 메시지가 표시하려고하는 .Timing 속성이 없습니다. 나는 첫 번째 인스턴스에 적용하기 전에 속성 값을 읽도록 요청했기 때문에 .Timing의 두 번째 인스턴스에서 오류가 발생한다고 생각합니다. –

관련 문제