Attach on powerpoint Slide

tested on Powerpoint2003@Windows XP

Find and click "Control Toolbox" and select "Shockwave Flash Object" from the list. Then, draw the control in your slide. Right-click at the control and select "Properties". Specify your movie location on the "Movie" property and modify "WMode" property to "Direct" or "gpu". (default value "Window" is not valid for Stage3D swfs.)

See also Microsoft Support page for detailed instruction.

Please use newer versions (0.20 or later) for this purpose, since older versions (0.16 or before) need an additional setting to display on powerpoint and have terrible bugs.

Note that newer version (0.20 or later) are still buggy and not so stable. It sometimes freezes.

VBA script

  • class module Class1.cls
    1. Public WithEvents appevent As Application
    2. Private Sub appevent_SlideShowNextSlide(ByVal Wn As SlideShowWindow)
    3. Dim sld As Slide
    4. Set sld = Wn.View.Slide
    5. Dim s As shape
    6. For Each s In sld.Shapes
    7. If s.Name Like "ShockwaveFlash*" Then
    8. Dim swf As ShockwaveFlash
    9. Set swf = s.OLEFormat.Object
    10. Dim fn As String
    11. fn = swf.Movie
    12. With swf
    13. .Movie = "dummy"
    14. .Movie = fn
    15. .WMode = "Direct"
    16. .FrameNum = -1
    17. .Playing = True
    18. End With
    19. End If
    20. Next
    21. End Sub

This function is called when a slide is shown. All the shock wave flash objects in the slide are forced to reload. This is done by setting Movie property to dummy file name ("dummy") and then put the name back to the original one. This ridiculous operation can force reload the movie. I do not know any sophisiticated ways. Only rewind the movie usually does not work correctly.

  • module Module1.bas
    1. Dim myobject As New Class1
    2. Sub startEvents()
    3. Set myobject.appevent = Application
    4. End Sub
    5. Sub stopEvents()
    6. Set myobject.appevent = Nothing
    7. End Sub

To use these functions, launch VBA editor in the powerpoint first. Then create new class module (its name may be Class1) and write the SlideShowNextSlide function above. Next, create new module and write the startEvents and stopEvents functions. Quit VBA editor and exec startEvents() from macro. Use at your own risk.

This code is tested on powerpoint2003@Windows XP