首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PowerPoint中功能区中的VBA仅在使用另存为/另存拷贝为后工作一次

PowerPoint中功能区中的VBA仅在使用另存为/另存拷贝为后工作一次
EN

Stack Overflow用户
提问于 2014-12-05 07:20:48
回答 1查看 291关注 0票数 0

我的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文件,ribbon命令可以正常工作-根据您的需要随时执行。

4)从按钮手动启动pptm中的电子邮件vba代码始终工作顺畅,无论启动频率如何。

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

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

致以亲切的问候,

马里奥

代码如下:

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

发布于 2014-12-05 20:36:26

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27306058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档