我目前在一些视觉基础的东西有问题 . 我已使用以下代码成功将形状添加到当前的Powerpoint幻灯片:
dim pres as Microsoft.Office.Interop.Powerpoint
dim slide as pres.ActivePresentation.Slides(1)
With slide.Shapes.AddShape(Type:=Microsoft.Office.Core.MsoAutoShapeType.msoShapeActionButtonCustom, Left:=50, Top:= 50, Width:=70, Height:=30)
.Name="Test"
End With
所以我现在要做的就是函数,无论何时单击它(在演示模式下)它都应该调用在同一个类中定义的名为“test()”的Sub . 我无法做到这一点 . 我现在可以做的就是使用以下代码从演示文稿中调用一个宏:
dim pres as Microsoft.Office.Interop.Powerpoint
dim slide as pres.ActivePresentation.Slides(1)
With slide.Shapes.AddShape(Type:=Microsoft.Office.Core.MsoAutoShapeType.msoShapeActionButtonCustom, Left:=50, Top:= 50, Width:=70, Height:=30)
.Name="Test"
With .ActionSettings(PowerPoint.PpMouseActivation.ppMouseClick)
.Run = "test"
.Action = PowerPoint.PpActionType.ppActionRunMacro
End With
End With
但由于我的演示文稿中没有任何宏,这将导致错误 . 当我使用powerpoint中的集成visual basic编辑器手动添加宏时,它就像我想要的那样工作 .
有没有办法直接从我的Visual Basic代码中调用Sub而无需创建宏?
我希望我清楚自己,你们明白了我的问题 .
提前致谢 .
2 回答
您的代码是在支持宏的演示文稿或加载项中运行的吗?
我对你想要做的事情的理解是这样的:
以编程方式向幻灯片添加形状,设置其操作方法以运行宏"test"然后在幻灯片放映模式下单击 .
以编程方式将宏"test"添加到演示文稿中 .
如果这是正确的,步骤2需要以下内容:
将演示文稿(.pptx)重新保存为启用宏的文件,例如.pptm,.potm,ppsm
PowerPoint在文件/选项/信任中心/信任中心设置/开发人员宏设置下设置为"Trust access to the VBA project object model"
您添加了对Microsoft Visual Basic for Applications Extensibility 5.3库的引用
然后使用VBA对象模型(需要上面的引用)来创建代码模块,然后在VBA项目中插入该过程 . 在这里开始探索对象模型:ActivePresentation.VBProject
这会添加一个标准代码模块:
这会从字符串中添加一个过程(您也可以从文件中执行此操作):
我偶然发现了我正在寻找的解决方案 . 我没有找到一种方法将动作引用到powerpoint形状,而是可以设法从OLEObject调用一个函数 . OLEObject具有处理程序,因此可以简单地使用click事件 .
首先,您需要添加对Forms和Visual Basic for Application的引用,只需添加即可
你的代码 .
其次,您需要向幻灯片添加OLEObject CommandButton并为其添加处理程序,您可以通过以下方式实现此目的:
我在vbarchiv找到了一个非常有用的答案 .
谢谢你的帮助