2

パワー ポイント プレゼンテーションのスライドでプレゼンテーション中に実行される vba スクリプトがあります。同じスライドにアニメーションがあります。アニメーションが実行されると、スクリプトは「バックグラウンドで」正常に実行されますが、アニメーションの特定のステップで、vba-script の実行方法を変更したいと思います。タイムライン オブジェクトまたは他の場所をチェックして、アニメーションがどこまで実行されたかを確認するか、正しいステップに到達したときにイベントをトリガーしますが、何も見つかりませんでした。

これは現時点での私のスクリプトです (放射性線源を示し、全方向に放射性物質を送り出します)

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Public Running As Boolean ' Switched on or off by another sub

Sub DrawLines()
  Dim endx As Long
  Dim endy As Long
  Dim Slideid As Long
  Dim tetha As Double
  Dim origx As Long
  Dim origy As Long
  Dim linelength As Long
  Dim tl As TimeLine

  Slideid = 2
  origx = 100
  origy = 430
  linelength = 2000

  Dim newline As Shape
  While Running

  With ActivePresentation.Slides(Slideid).Shapes
    tetha = 2 * 3.1415 * Rnd()
    endx = Int(linelength * Sin(tetha))
    endy = Int(linelength * Cos(tetha))
    ' Here I want to alter endx and endy after a certain step in the animation

    Dim sleeptime As Long
    sleeptime = Int(500 * Rnd())
    Set newline = .AddLine(origx, origy, endx, endy)
    DoEvents ' needed to redraw
    Sleep (30)
    newline.Delete
    DoEvents  ' needed to redraw
    Sleep (sleeptime)
  End With
  Wend
End Sub   

endx と endy を変更したい時点で、次のようなものを探していました

IF Activepresentation.slides(slideid).timeline.activestep>=5 THEN
   dosomething()
End if

または、次のようなものを作ることができれば

Public Changed as boolean
Sub OnSlideShowAnimationStep( .... )
  IF currentstep >=5
     Changed = TRUE
  end if
end sub

その後、ドローラインの Changed を確認できますが、現在のアニメーション ステップを示す属性も、アニメーション ステップで発生するイベントも見つかりません。他に見るべきだった場所はありますか?

4

2 に答える 2

2

アニメーションが On Click の場合は、SlideShowWindow(1),View.GetClickCount を使用できます。

それ以外の場合は、 OnSlideShowNextBuild(ByVal Wn As SlideShowWindow) を使用してカウントできます

于 2014-01-15T12:41:56.603 に答える
0

タイムラインのどのステップまたはどこをチェックするイベントまたは方法についてはわかりませんが、これを修正する可能性のあるハックが 1 つあります。

ループにいるときは、いつでも形状の (左、上) 位置を確認できます。そして、それはアニメーションの実行中に変化します。

しかし一方で、Effect オブジェクトの MoveTo 関数を使用して、アニメーションを手動で繰り返すことができる場合もあります。 MSDN

しかし、私はそれを自分で使用したことはありません。

于 2013-11-05T12:06:45.010 に答える