0

アニメーション付きの形状を削除して、アニメーションなしでスライドの印刷画面を作成しようとしています。その後、元に戻したいので、元に戻すコマンドを使用します。問題は、このコマンドが遅くまで機能していることです。つまり、すべての vba コードが終了したときに元に戻すことができ、コマンドを呼び出したときに元に戻す必要があります。コードを数秒間停止しようとしていますが、機能していません。私が使用しているコードは次のとおりです。

  For Each sl In ActivePresentation.Slides
        shapeNum = sl.Shapes.count
        'ActivePresentation.Slides(1).Shapes(1).
        While shapeNum <> 0
            If sl.Shapes(shapeNum).AnimationSettings.Animate = msoTrue Then
                animationNum = animationNum + 1
                sl.Shapes(shapeNum).Delete
                animationNum = animationNum + 1
            End If
            shapeNum = shapeNum - 1
        Wend
   Next

   ActivePresentation.SaveAs "c:\dink_template\created_files", ppSaveAsPNG, msoTrue

   If animationNum <> 0 Then
        Application.CommandBars.ExecuteMso "Undo"
        'to make the code stop for 5 seconds
        waitTime = 5
        Start = Timer
        While Timer < Start + waitTime
        Wend
   End If
   ' Here the code continues doing several things

また、MsgBox または別の方法で停止しようとしています: http://www.pptfaq.com/FAQ00466_Put_your_macro_to_Sleep.htm

しかし、何も機能せず、5秒間何もしませんが、コードを終了するまで元に戻す機能は機能しません。機能するのは、デバッガーを使用することです。デバッガーで停止すると動作しますが、コードをマクロとして配置すると使用できなくなるため、デバッガーを使用せずに実行したいと考えています。

4

1 に答える 1

2

わかりました、私はこれに対する解決策を見つけたと思います。Application.CommandBars.ExecuteMso の後に DoEvents を使用するだけです 「元に戻す」 これで問題は解決します。少なくともこれが誰かに役立つことを願っています。

于 2013-06-26T09:48:12.133 に答える