PowerPoint中的Ribbon中的VBA仅在使用SaveAs / SaveCopyAs后才能工作一次

时间:2014-12-04 23:20:48

标签: vba error-handling powerpoint ribbon save-as

我遇到了PowerPoint功能区的奇怪行为。

我创建了一个带有功能区的pptm文件,用于快速链接到2个vba代码。 一种是将数据从xls文件复制到图表。另一个是将演示文稿的副本保存为pptx文件和pdf文件(savecopyas)并发送带有outlook的电子邮件。

只要我只保存pdf文件,一切都会顺利进行。如果我还创建了pptx文件(或另一个命名的pptm文件),则vba脚本仅在第一次运行 - 之后两个操作的功能区都不再起作用。它提示错误,说找不到vba代码。

我经历了什么?

1)只要电子邮件代码没有启动,xls-code就会随时运行。

2)没有警告pptx文件不再包含任何vba代码(这就是Excel会告诉你的)

3)如果我添加了将pptm保存为pptx的最后一行,则模块将保留在pptx中,直到它关闭为止。在这种pptx文件的情况下,功能区命令正常工作 - 您可以随时使用。

4)无论手机频繁启动,手动按钮都可以手动启动pptm中的电子邮件vba代码。

我在网上只发现了2-3个类似的问题/错误,没有解释或只有解决方法。

有没有人可以解释并帮助我解决这个奇怪的行为?

亲切的问候,

马里奥

以下是代码:

Sub Email(ByVal control As IRibbonControl)

Dim Send_Email, olApp As Object
Dim Send_1, Send_2 As String

With ActivePresentation
.SaveCopyAs _
    FileName:=ActivePresentation.Path & "\" & "Test" & ".pptx", _
    FileFormat:=ppSaveAsOpenXMLPresentation
End With

With ActivePresentation
.SaveCopyAs _
    FileName:=ActivePresentation.Path & "\" & "Test" & ".pdf", _
    FileFormat:=ppSaveAsPDF
End With

Send_1 = ActivePresentation.Path & "\" & "Test" & ".pptx"
Send_2 = ActivePresentation.Path & "\" & "Test" & ".pdf"

Set olApp = CreateObject("Outlook.Application")

Set Send_Email = olApp.CreateItem(0)

With Send_Email
 .To = "test@gmail.com"
 .Subject = "Test"
 .Body = "Hallo "
 .Attachments.Add Send_2
 .Attachments.Add Send_1
 .Send
End With

Set olApp = Nothing

End Sub

1 个答案:

答案 0 :(得分:0)

如果您希望VBA宏工作,则需要以.pptm(启用宏)格式保存演示文稿。默认情况下,pptx没有/运行VBA代码。