VBA to Automatically Start Animation

Posted on 2014-12-19
Last Modified: 2014-12-19
Question by:Eirman
  • 4
  • 3

Accepted Solution

Jamie Garroch earned 500 total points
ID: 40509104
Try this Eirman:

' ===================================================================================
' PowerPoint VBA Macro
' Author : Jamie Garroch
' Date : 19DEC2014
' Copyright (c) 2014 GMARK Ltd.
' Source code is provide under Creative Commons Attribution License
' This means you must give credit for our original creation in the following form:
' "Includes code created by GMARK Ltd. ("
' Commons Deed @
' License Legal @
' ===================================================================================
' Purpose : make the shape-implemented timer trigger automatically
' Dependencies : A shape-stack Countdown Timer from A6 Training & Consultancy Ltd.
' Usage : 1. Select and copy all the shapes in a timer shape stack
'         2. Paste the shape stack to a slide without any other animation*
'         3. With the shape stack selected on the target slide, press
'            Alt-F8 and run the MakeTimerAutomatic macro
' Tested with the 60 second stack on slide 4 only
' * The code could be modified to check the relevant sequence as required
' How it works:
'   - The user copies and pastes the shape stack to a target slide
'   - The macro looks at each animation effect in the interactive (trigger) sequence
'   - Each effect is copied and recreated in the main timeline sequence
'   - All effects in the interactive sequence are deleted
' ===================================================================================

Option Explicit

Sub MakeTimerAutomatic()

  ' Do some basic selection checks
  If Not ActiveWindow.Selection.Type = ppSelectionShapes Then GoTo selectionError
  If Not ActiveWindow.Selection.ShapeRange.Count > 0 Then GoTo selectionError

  Dim oShp As Shape
  Dim oSld As Slide
  Dim effectShape As Shape, effectType As MsoAnimEffect, effectDuration As Single, effectDelay As Single, effectExit As Boolean
  Dim effectID As Integer
  Dim oEffect As Effect
  Dim iEffects As Integer
  ' Get a reference to the slide on which the selection was made
  Set oSld = ActiveWindow.Selection.ShapeRange.Parent
  ' Loop through each animation effect in the interactive trigger sequence, copying its parameters before recreating the effect in the main sequence
  With oSld.TimeLine.InteractiveSequences(1)
    iEffects = oSld.TimeLine.InteractiveSequences(1).Count
    For effectID = 1 To .Count
      ' Copy the relevant animation effect properties from the interactive trigger sequence
      effectType = .Item(effectID).effectType
      effectDuration = .Item(effectID).Timing.Duration
      effectDelay = .Item(effectID).Timing.TriggerDelayTime
      effectExit = .Item(effectID).Exit
      Set effectShape = .Item(effectID).Shape
      ' Add a new effect to the main (non-interactive) sequence
      Set oEffect = oSld.TimeLine.MainSequence.AddEffect(effectShape, effectType, , msoAnimTriggerAfterPrevious)
      oEffect.Exit = effectExit
      oEffect.Timing.TriggerDelayTime = effectDelay
  End With
  ' Delete the effects from the interactive trigger sequence (need to count backwards in the collection)
  For effectID = oSld.TimeLine.InteractiveSequences(1).Count To 1 Step -1
  ' Provide the user with feedback
  MsgBox iEffects & " animation effects have been converted from the interactive trigger sequence to the main timeline sequence.", _
    vbInformation + vbOKOnly, "Macro by"
Exit Sub

  MsgBox "Please select a group of shapes representing a timer.", vbCritical + vbOKOnly, "Selection Error"
End Sub

Open in new window

LVL 23

Author Comment

ID: 40509185
I'm used to VBA in Access.  I can pop code into the OnLoad event of a form or whatever.
In PowerPoint I can only seem create a module which is stand-alone. (I've only been using PP for a few hours)

Where do I put the code Jamie?

Expert Comment

by:Jamie Garroch
ID: 40509299
Ah - sorry Eirman. Assumption is a bad habit!

Check out our article if you've never used VBA before:
What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

LVL 23

Author Comment

ID: 40509302
I'm working with a new clean file.
I tried the Alt+F8 and it worked ...... once. When I save .... close .... open it doesn't work.

Perhaps something simpler, after all, it only needs a single click to get things started.

Expert Comment

by:Jamie Garroch
ID: 40509323
That's expected behaviour.

When you insert VBA code into a Microsoft Office file it must be saved using one of the macro-enabled formats. For example, in PowerPoint you could use .pptm. If you try to use the default .pptx extension then the VBA project is removed before the file is saved. You could develop your presentation in "macro mode" and then save it as a .pptx when you've finished.

So the VBA code works :-)
LVL 23

Author Comment

ID: 40509326
I've requested that this question be closed as follows:

Accepted answer: 0 points for Eirman's comment #a40509185

for the following reason:

Got it .... thanks .... nice coding and commentary.
LVL 23

Author Closing Comment

ID: 40509327
Got it .... thanks .... nice coding and commentary.

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

 Regular Expressions Microsoft Word has sophisticated search tools that can search for patterns. For example if you wanted to search for all UK phone numbers that followed a pattern of five digits, a space and then six digits you can easily do th…
Technology opened people to different means of presenting information, but PowerPoint remains to be above competition. Know why PPT still works today.
This video teaches viewers how to add transitions to their Slideshows and how to set up timing for the transitions.
The viewer will learn how to edit text. This includes Font, Spacing, Resizing, Color, and other special text options.

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now