在PowerPoint的编辑模式下,如何从按钮调用宏?

7

我想编写一个VBA宏,能够在PowerPoint 2007-2010的编辑模式下调用。

我可以很容易地向演示文稿中添加一个命令按钮。但是,在幻灯片放映模式下,只能单击此按钮来触发VBA宏。

然而,我想要的是当我在编辑模式下单击此按钮时,触发关联的VBA宏。在编辑模式下单击它可以让我更改其大小等属性,但并不调用该宏。

另一方面,在Excel中,当我插入一个按钮时,我得到了完全符合预期的行为 - 单击它会调用VBA操作。

那么我该如何创建一个按钮(或其他具有相同功能的元素),以便在PowerPoint的编辑视图中调用VBA宏呢?我能想到的唯一方法就是使用功能区操作,但在这种情况下不切实际,因为该宏将修改与按钮相关联的形状,并且每个幻灯片上可能有多个这些形状,每个形状都应该有自己的按钮。


你使用的是哪个版本的PPT? - Olle Sjögren
目前正在使用2007-2010版本。不打算再往回退,但如果有一种方法可以在未来继续使用,那就太好了。 - mr_wurm
2个回答

0
我能想到的唯一办法是使用功能区操作,但是在这种情况下这是不切实际的,因为宏将修改与按钮相关联的形状,每个幻灯片可能有几个这样的形状,每个形状都应该有自己的按钮。

根据您要做的事情,启动宏的功能区按钮可能非常实用。 宏可以对当前选择进行操作(并测试当前选择以确保其是适当的内容)。

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

我想这可能是从功能区智能工作的一种方式。但我真的希望有另一种不依赖于功能区的方式。 - mr_wurm

0

只需要在其他地方回答它,也可以这样做,你需要下载这个文件http://www.officeoneonline.com/eventgen/EventGen20.zip并安装它,创建一个类模块,然后粘贴这段代码: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

插入一个新模块 粘贴这段代码

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

现在运行TrapEvents,每当你点击带有该文本的形状时,您的子程序将运行。感谢编写此内容的人http://www.officeoneonline.com/eventgen/eventgen.html

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接