Solved

Syntax for PowerPoint VBA to invoke a Trigger

Posted on 2008-06-12
13
2,809 Views
Last Modified: 2016-04-12
I want to invoke an animation trigger from VBA during a PowerPoint SlideShow.

I can't come up with the correct sytax to do this invocation ...

something like, I don't know,

ActivePresentation.Slides(mySlide.Name).shapes(MyTriggerShape.Name).ActionSettings.Item(ppMouseClick).ActionSomething?  Or something else?

Regards
Brian
0
Comment
Question by:canesbr
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 7
  • 5
13 Comments
 
LVL 21

Expert Comment

by:GlennaShaw
ID: 21775281
0
 

Author Comment

by:canesbr
ID: 21775800
Excuse me - the other question was being neglected.
You seem peeved??

You point to the attached code example
No, this is not it at all.
That example sets up a rectangle with a diamond effect that will execute after a click. (The 'trigger' here refers to Click(Page) or With or After(none))
This is not the same as the 'trigger' I am talking about

Run the example macro. (Ignore the error it causes) This is equivalent to adding the following manually
SlideShow>Custom Animation& >Rectangle x>Timing>Start>On Click

But, now, bear with me. Add Oval 1 manually, then
Slide Show>Custom Animation& >Rectangle x>Timing>Triggers>Start Effect on Click of:>Oval 1

You will then see a grey box above Rectangle x in the Custom Animation Task Pane
Trigger: Oval y

When you go into View>SlideShow and you click on the Oval, it will start the Diamond motion path for the Rectangle.

So, you can now see that the nomenclature is confusing  the 'Trigger' <<BUTTON>> in the Timing Tab of the Animation Dialog is, I believe, NOT the same as the word 'trigger' in the timing START options, which are variously
msoAnimTriggerMixed
msoAnimTriggerNone
msoAnimTriggerOnPageClick Default.
msoAnimTriggerOnShapeClick
msoAnimTriggerWithPrevious
Also I think that the example error is caused because the msoAnimTriggerOnShapeClick is out of context here. only the PageClick is valid without a Trigger *button* in the setup

Now, so, it is NOT the VBA code to SET UP the animation trigger in the Normal Edit View that I am talking about, I am looking for the code during the SLIDE SHOW VIEW. What is the code equivalent to clicking on the Oval during the slide show that will run, for example inside an event subroutine such as PresentationNewSlide.

See attached file for the Rectangle and Oval example (you need to rename from .txt to .ppt)

Please advise

I am, dear expert, if will you allow me, to remain your faithful client,
Brian

[Or; only, if you don't wan't me as your client, please could you invite another expert to take over? However, if you do want to continue to try and help me solve this, I am okay with that.]

'The following example adds a shape to a slide, adds an animation to the shape, 
'and instructs theshape 'to begin the animation three seconds after it is clicked.
Sub AddShapeSetTiming()
    Dim effDiamond As Effect
    Dim shpRectangle As Shape
    Set shpRectangle = ActivePresentation.Slides(1).Shapes _
        .AddShape(Type:=msoShapeRectangle, Left:=100, _
        Top:=100, Width:=50, Height:=50)
    Set effDiamond = ActivePresentation.Slides(1).TimeLine.MainSequence _
        .AddEffect(Shape:=shpRectangle, effectId:=msoAnimEffectPathDiamond)
    With effDiamond.Timing
        .Duration = 5
        .TriggerType = msoAnimTriggerOnShapeClick 'Causes an error (Brian)
        .TriggerDelayTime = 3
    End With
End Sub

Open in new window

Example-in-Q23480895.txt
0
 
LVL 21

Expert Comment

by:GlennaShaw
ID: 21785680
You made me laugh.  Wasn't aware you felt the other question was being neglected, just trying to save you points.
I don't claim to be a super expert when it comes to PowerPoint VB, but I usually know enough to help.  So, to that end, take a look at:
http://msdn.microsoft.com/en-us/library/aa168024.aspx:
For each interactive sequence, you designate a trigger shape; the interactive sequence starts when the user clicks that shape. To specify a trigger shape for a sequence, set the Timing.TriggerShape property of the first Effect object in the timeline of the sequence to the desired shape.
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:canesbr
ID: 21785723
Thanks, but no need to save me points, my points are, like American Express, unlimited.

Again, the stuff you have been pointing me to applies to setting up the animation properties.
Suppose the shapes all have the correct animation properties.
Now you go to the slide show view.
You can manually click to start whatever animation was set up.
My question is - what is the VB to do those clicks for you? (I am sooo lazy..)

Regards
Brian
PS Why is .ppt not allowed for Attach File in EE?
0
 
LVL 21

Expert Comment

by:GlennaShaw
ID: 21785771
Why is .ppt not allowed for Attach File in EE?  Good question, I'm assuming it's because of the malicious macro possiblity.

From: http://msdn.microsoft.com/en-us/library/aa168134(office.11).aspx

The following example adds an interactive sequence to a slide. The sequence consists of one shape that is not animated, but serves as a trigger for another shape when clicked by the user.

Dim objSequence As Sequence
Dim objShape1 As Shape
Dim objShape2 As Shape
Dim objEffect1 As Effect

With ActivePresentation.Slides(2)

    'Assign variables to shapes used in sequence
    Set objShape1 = .Shapes("Button")
    Set objShape2 = .Shapes("Arrow")
   
    With .TimeLine.InteractiveSequences
        'Add interactive sequence as first in collection
       Set objSequence = .Add(1)
       'Add effect for shape to fly in
       'when trigger shape is clicked
       With objSequence
        Set objEffect1 = .AddEffect(Shape:=objShape2, _
            effectId:=msoAnimEffectFly, _
            trigger:=msoAnimTriggerOnShapeClick)
        'Set trigger shape for effect
        objEffect1.Timing.TriggerShape = objShape1
       End With
    End With
End With

0
 

Author Comment

by:canesbr
ID: 21786112
Ohkayyy...
That example still ultimately requires the user to put his/er living hand (or other pointing device) onto a non-rodent mouse and squirl around until s/he gets a pointer and then move the pointer to the trigger shape (which takes a certain feat of memory and knowledge of which shape does what) and then to exert a modicum of downward pressure using one finger of that aforementioned extremity.
End Ohkayyy

So that example is another setup macro. It doesn't invoke the animation.

I am looking for a way to execute the required click equivalent via the macro.

Regards
Brian
0
 
LVL 21

Expert Comment

by:GlennaShaw
ID: 21787375
Ah ha.
You don't even need VBA for that, simply set the animations to start With Previous or After Previous.
0
 

Author Comment

by:canesbr
ID: 21787613
Well. No.

Back to the original need.

I need to repeat certain sequences indefinitely within a slide (not necessarily the whole slide) and there is no apparent option to *repeat* a *sequence* of animations with with, with before or hereinafterbeforeclick or inbetweenthecracks or upsideinsidedownsideoutside. Workarounds involving cUSTOM sHOWs are nOt appropriate for my purposes.
So I conceived of having a sequence of animations triggered by an *automated* click on a hidden shape during a slide show. This invocation would be set up in an SlideShowNextSlide Event procedure and looped the required number of times.
The needed statement, (((I think, but don't know exactly, and that-is-what-I-am-asking-for-the-past-five-days))) is like the following:

ActivePresentation.Slides(mySlide.Name).shapes(MyTriggerShape.Name).ActionSettings.Item(ppMouseClick).ActionSomething?

May day. May day.
Regards
Brian

PS: Re: the .ppt file attachment in EE - .xls files and .doc files can have malicious macros as well, and they are allowed. So why not .ppt?
0
 
LVL 21

Expert Comment

by:GlennaShaw
ID: 21792787
0
 

Author Comment

by:canesbr
ID: 21793087
So there is noone else in EE who could help?
Regards
Brian
0
 

Author Comment

by:canesbr
ID: 24921276
This is abandoned by EE since 6/16/2008
I never got an answer
0
 

Accepted Solution

by:
canesbr earned 0 total points
ID: 24942933
I am getting pressure to close this question
0
 

Expert Comment

by:Eric Haenke
ID: 41547588
I have a very similar need... to start the 1st animation after vba from a user form click is complete without actually clicking the slide.
0

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Setting the Scene PowerPoint is a creative tool in the right hands but it also includes a much underutilised programming dimension. In this beginner level article, we're going to show you some of some key elements of programming PowerPoint using th…
Outline From PowerPoint 2010 it is possible to have shapes appear in front of video, in earlier versions video always played in front of other shapes. This means it is possible to have captions animated to appear in front of video. Users who h…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

734 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