我正在尝试编写一个可以在PowerPoint 2007-2010中以编辑模式调用的vba宏。
我可以轻松地将一个命令按钮添加到演示文稿中。但是,在幻灯片模式下,只能单击此按钮以触发vba宏。
但是,我想要做的是让这个按钮在编辑模式下触发相关的vba宏。在编辑模式下单击它可以让我更改其大小等,但它不会调用宏。
另一方面,在Excel中,当我插入按钮时,我得到完全预期的行为 - >点击它会调用vba动作。
那么如何在PowerPoint的编辑视图中创建一个调用vba宏的按钮(或其他相同方式的元素)。我能想到的唯一方法是使用功能区动作,但是在这种情况下这是不实际的,因为宏将修改与按钮关联的形状,并且每个幻灯片可能有多个这些形状应该各自具有自己的形状按钮。
答案 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
的人