我有多个演示文稿打开,并希望将其保存为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,但是这会给出一个来自宏编辑器"type-mismatch“的错误,所以不能运行这个。
我想不出怎么解决这个问题。你能建议我能做些什么来完成这个任务吗?
谢谢你的帮助
维卡斯
发布于 2020-09-07 15:55:12
让我们先修正一下逻辑。我已经从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发布于 2020-09-08 11:26:19
好吧,所以我发现了问题。Powerpoint内存中有一些文件,所以当我在演示文稿上运行循环时,它从演示文稿中获得了一些PDF文件(几天前我在PPT中错误地打开了这个文件)。他们仍然在PPT的陈述变量中。因此,当它调用prs.ExportAsFixedFormat时,该方法不存在于该对象上,因此它失败了,并且“方法未找到错误”。我添加了代码,以确保我得到的演示实际上是一个PPT (下面的代码)。
AFter,当我运行代码时,它仍然给出了“类型错配”错误。因此,我添加了代码来将对象设置为表示对象,然后它运行得很好。这是我现在使用的编辑代码:
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谢谢你的帮助,维卡斯
https://stackoverflow.com/questions/63773802
复制相似问题