首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PPT VBA,保存为PDF,所有打开的PPT。

PPT VBA,保存为PDF,所有打开的PPT。
EN

Stack Overflow用户
提问于 2020-09-07 08:18:09
回答 2查看 40关注 0票数 0

我有多个演示文稿打开,并希望将其保存为PDF格式。我有这样的代码:

代码语言:javascript
复制
For Each prs In Presentations
    With prs.Windows(1)
        If Not .Active Then
            .Activate
        End If
    End With
    
    ActivePresentation.ExportAsFixedFormat "d:\\temp\\" & prs.Name & "-color.pdf", _
        ppFixedFormatTypePDF, ppFixedFormatIntentScreen, msoCTrue, ppPrintHandoutVerticalFirst, _
        ppPrintOutputSlides, msoFalse, , , , False, False, False, False, False

 Next prs

但它只将我开始使用的窗口保存为PDF格式。它不会为每个演示文稿保存PDF,尽管PPT活动窗口会发生变化。

我尝试了另一种用于其他方法的方法:对于演示文稿中的每个prs

代码语言:javascript
复制
prs.ExportAsFixedFormat "d:\\temp\\" & prs.Name & "-color.pdf", _
    ppFixedFormatTypePDF, ppFixedFormatIntentScreen, msoCTrue, ppPrintHandoutVerticalFirst, _
    ppPrintOutputSlides, msoFalse, , , , False, False, False, False, False

接下来,prs,但是这会给出一个来自宏编辑器"type-mismatch“的错误,所以不能运行这个。

我想不出怎么解决这个问题。你能建议我能做些什么来完成这个任务吗?

谢谢你的帮助

维卡斯

EN

回答 2

Stack Overflow用户

发布于 2020-09-07 15:55:12

让我们先修正一下逻辑。我已经从ExportAsFixedFormat命令中删除了多余的反斜杠;如果由于某种原因它们一定在那里,就把它们放回去。这样试一试;如果输出仍然抛出摆动,请告诉我们。

代码语言:javascript
复制
For Each prs In Presentations
    
    prs.ExportAsFixedFormat "d:\temp\" & prs.Name & "-color.pdf", _
        ppFixedFormatTypePDF, ppFixedFormatIntentScreen, msoCTrue, ppPrintHandoutVerticalFirst, _
        ppPrintOutputSlides, msoFalse, , , , False, False, False, False, False

 Next prs
票数 0
EN

Stack Overflow用户

发布于 2020-09-08 11:26:19

好吧,所以我发现了问题。Powerpoint内存中有一些文件,所以当我在演示文稿上运行循环时,它从演示文稿中获得了一些PDF文件(几天前我在PPT中错误地打开了这个文件)。他们仍然在PPT的陈述变量中。因此,当它调用prs.ExportAsFixedFormat时,该方法不存在于该对象上,因此它失败了,并且“方法未找到错误”。我添加了代码,以确保我得到的演示实际上是一个PPT (下面的代码)。

AFter,当我运行代码时,它仍然给出了“类型错配”错误。因此,我添加了代码来将对象设置为表示对象,然后它运行得很好。这是我现在使用的编辑代码:

代码语言:javascript
复制
Dim p As Presentation
For Each prs In Presentations
    Set p = prs
    If InStr(p.Name, "ppt") <> 0 Then
        p.ExportAsFixedFormat "d:\temp\" & p.Name & "-color.pdf", _
            ppFixedFormatTypePDF, ppFixedFormatIntentScreen, msoCTrue, ppPrintHandoutVerticalFirst, _
            ppPrintOutputSlides, msoFalse, , , , False, False, False, False, False
    End If
 Next prs

谢谢你的帮助,维卡斯

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

https://stackoverflow.com/questions/63773802

复制
相关文章

相似问题

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