打开Powerpoint演示文稿时如何自动执行宏?

时间:2012-07-03 07:03:53

标签: macros powerpoint startup execute

我有一个非常基本的问题,但无法在互联网上找到答案。
在Powerpoint 2010中,我有一个宏,我想在每次打开Powerpoint文档时执行。如何实现这一目标?

谢谢!

4 个答案:

答案 0 :(得分:5)

虽然Auto_Open不在PowerPoint演示文稿中运行,但您可以伪造它。将CustomUI部件添加到演示文稿,然后使用CustomUI OnLoad回调在演示文稿打开时运行代码。 CustomUI部分只需要CustomUI标签。

从此处获取自定义用户界面编辑器:http://openxmldeveloper.org/articles/customuieditor.aspx

在自定义UI编辑器中打开演示文稿。从“插入”菜单中插入CustomUI部件:

Add a Custom UI part

现在输入一些简单的RibbonX代码,如下所示:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" 
onLoad="MyOnloadProcedure" >
</customUI>

现在写下你的开放程序:

Sub MyOnloadProcedure()
    MsgBox "Hello"    
End Sub

如果在加载项中同时具有此和Auto_Open过程,则首先运行Auto_Open。​​

完全披露:当我想到使用这种方法并在Excel中使用它时,我等到我第一次在PPT Alchemy网站上遇到它:Run Code When PowerPoint Opens

答案 1 :(得分:0)

我正在使用PowerPoint 2016,因此尽管文档表明适用于PowerPoint 2016、2013、2010、2007,但我无法使用早期版本。此方法不需要任何加载项或应用程序挂钩即可处理事件。

参考链接: https://support.office.com/en-us/article/command-line-switches-for-microsoft-office-products-079164cd-4ef5-4178-b235-441737deb3a6?ocmsassetID=HA010153889&CTT=1&CorrelationId=ea39d200-aa81-4d6e-8302-afff4c65859e&ui=en-US&rs=en-US&ad=US#ID0EAABAAA=PowerPoint,_PowerPoint_Viewer

从命令行启动PowerPoint,并使用/ M开关让PowerPoint在启动命名的演示文稿文件时运行指定的宏。

最简单的方法是创建PowerPoint应用程序的快捷方式。然后转到快捷方式的“属性”窗口,然后选择“快捷方式”选项卡。接下来,将/ M开关,演示文稿文件名(包括路径)以及要运行的宏的名称(区分大小写,并且必须是演示文稿的一部分)添加到“目标”字段的末尾。双击快捷方式,瞧!

示例: 我的演示文稿是C:\ myPPTpres.pptm,宏是Run_Slide_Show,所以我需要添加 / M“ C:\ myPPTpres.pptm”“ Run_Slide_Show”到“目标”字段中现有文本的末尾。

  

“ C:\ Program Files(x86)\ Microsoft Office \ root \ Office16 \ POWERPNT.EXE”   / M“ C:\ myPPTpres.pptm”“ Run_Slide_Show”

确保您正在运行演示文稿的启用宏的版本(2016年,扩展名为.pptm。)

重要提示,如果您尝试使用宏自动开始幻灯片放映。在宏的开头添加一秒或更多秒的延迟,以允许应用程序完成其启动序列。如果您没有启动幻灯片,则应用程序将在完成启动时失去焦点,从而将幻灯片推到后台。

答案 2 :(得分:0)

假设宏的类型与自动事件相关,例如Auto_open(),Auto_close(),Auto_print()等,为了使powerpoint在打开powerpoint文件时执行宏,我们需要包含Powerpoint加载项或其他选项可能是将文件另存为.ppa或.ppam。

有关更多详细信息,以及要下载AutoEvents zip文件,请参考链接:http://skp.mvps.org/autoevents.htm

答案 3 :(得分:-5)

尝试编写此功能。

Sub Auto_Open()
   MsgBox("welcome")
End Sub

替换代码中的msgbox。