mr_wurm
mr_wurm

Reputation: 96

Calling a macro from a button in edit mode while in PowerPoint

I'm trying to write a vba macro that can be called in edit-mode in PowerPoint 2007-2010.

I can easily add a Command Button to a presentation. However, this button can only be clicked to trigger the vba macro while in slideshow mode.

However, what I would like to do is have this button trigger the associated vba macro while in edit mode. Clicking on it in edit mode allows me to change its size etc, but it doesn't call the macro.

In Excel on the other hand, I get exactly the expected behaviour when I insert a button -> clicking on it calls the vba action.

So how can I create a button (or other element that acts the same way) that calls a vba macro during edit view in PowerPoint. The only way I can think of is using a ribbon action, however this is unpractical in this case, because the macro will modify a shape that is associated with the button and there might be several of these shapes per slide that should each have their own button.

Upvotes: 7

Views: 7397

Answers (2)

abdullah
abdullah

Reputation: 108

just answer it a some where else also it is possible to do so all you need is download this file http://www.officeoneonline.com/eventgen/EventGen20.zip install it create a class module paste this code Option Explicit

Public WithEvents PPTEvent As Application



Private Sub Class_Initialize()
End Sub


Private Sub PPTEvent_WindowSelectionChange(ByVal Sel As Selection)
If Sel.Type = ppSelectionShapes Then
    If Sel.ShapeRange.HasTextFrame Then
        If Sel.ShapeRange.TextFrame.HasText Then
           If Trim(Sel.ShapeRange.TextFrame.TextRange.Text) = "Text inside your shape" Then
              Sel.Unselect
              yoursub
           End If
       End If
     End If

   End If

End Sub

insert a new module paste this code

Dim cPPTObject As New Class1

Dim TrapFlag As Boolean

 Sub TrapEvents()
      If TrapFlag = True Then
         MsgBox "Already Working"
         Exit Sub
      End If
    Set cPPTObject.PPTEvent = Application
    TrapFlag = True
 End Sub




 Sub ReleaseTrap()
      If TrapFlag = True Then
         Set cPPTObject.PPTEvent = Nothing
         Set cPPTObject = Nothing
         TrapFlag = False
      End If
 End Sub

 Sub yoursub()
         MsgBox "Your Sub is working"
 End Sub

Now run TrapEvents and whenver you will click shape with that text in it your sub will run Credits to the person who wrote this http://www.officeoneonline.com/eventgen/eventgen.html

Upvotes: 0

Steve Rindsberg
Steve Rindsberg

Reputation: 14809

The only way I can think of is using a ribbon action, however this is unpractical in this case, because the macro will modify a shape that is associated with the button and there might be several of these shapes per slide that should each have their own button.

Depending on what you're trying to do, a ribbon button that launches a macro might be quite practical. The macro could operate on the current selection (and test the current selection to ensure that it's something appropriate).

With ActiveWindow.Selection.ShapeRange
  ' operate on the currently selected shapes
End with

Upvotes: 0

Related Questions