【发布时间】:2015-02-03 01:01:44
【问题描述】:
我的 PowerPoint 功能区出现异常行为。
我创建了一个带有功能区的 pptm 文件,用于快速链接到 2 个 vba 代码。 一种是将数据从 xls 文件复制到图表。另一种是将演示文稿的副本另存为 pptx 文件和 pdf 文件 (savecopyas),并使用 Outlook 发送电子邮件。
只要我只保存 pdf 文件,一切都会顺利进行。如果我还创建了 pptx 文件(或其他命名的 pptm 文件),则 vba 脚本仅在第一次运行 - 之后两个操作的功能区不再工作。提示找不到vba代码。
我经历了什么?
1) 只要未启动电子邮件代码,xls 代码就可以按您喜欢的频率运行。
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
【问题讨论】:
标签: vba error-handling powerpoint ribbon save-as