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



我打开了多个演示文稿,希望将它们保存为PDF。我有这个代码:

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

prs.ExportAsFixedFormat "d:\temp\" & prs.Name & "-color.pdf", _
ppFixedFormatTypePDF, ppFixedFormatIntentScreen, msoCTrue, ppPrintHandoutVerticalFirst, _
ppPrintOutputSlides, msoFalse, , , , False, False, False, False, False

下一个prs但这给出了来自宏编辑器"的错误类型不匹配";所以不能运行这个。

我不知道如何解决这个问题。你能建议我做些什么来完成这项任务吗?

感谢的帮助

Vikas

让我们先修复逻辑。我已经从ExportAsFixedFormat命令中删除了多余的反斜杠;如果他们因为某种原因必须在那里,就把他们放回去。尝试一下这种方式;如果出口仍然不稳定,请告诉我们。

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

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

A之后,当我运行代码时,它仍然给出"类型不匹配"错误。所以我把代码添加到Set对象中作为Presentation对象,然后它就很好地工作了。这是我现在使用的经过编辑的代码:

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

谢谢你的帮助Vikas

最新更新