在PowerPoint中,在编辑模式下从按钮调用宏

时间:2012-11-26 12:21:29

标签: vba button powerpoint editmode

我正在尝试编写一个可以在PowerPoint 2007-2010中以编辑模式调用的vba宏。

我可以轻松地将一个命令按钮添加到演示文稿中。但是,在幻灯片模式下,只能单击此按钮以触发vba宏。

但是,我想要做的是让这个按钮在编辑模式下触发相关的vba宏。在编辑模式下单击它可以让我更改其大小等,但它不会调用宏。

另一方面,在Excel中,当我插入按钮时,我得到完全预期的行为 - >点击它会调用vba动作。

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

2 个答案:

答案 0 :(得分:0)

  
    

我能想到的唯一方法是使用功能区动作,但在这种情况下这是不实际的,因为宏将修改与按钮关联的形状,并且每个幻灯片可能有多个这样的形状有自己的按钮。

  

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

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

答案 1 :(得分:0)

在其他地方也回答一下 可以这样做,只需要下载此文件 http://www.officeoneonline.com/eventgen/EventGen20.zip 安装它 创建一个类模块 粘贴此代码 显式选项

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

结束子

插入一个新模块 粘贴此代码

将cPPTObject设为新的Class1

将TrapFlag设为布尔值

 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

的人