Excel 将 pptx 保存为 pdf 的宏;代码错误

Excel macro to save pptx as pdf; error with code

我知道这个问题可能被问了 x1000 次,但过去 3 个小时我一直在努力通过 excel vba 将 pptx 转换为 pdf(这是我的报告所必需的)生成器,为了保持布局干净整洁,我决定使用 PowerPoint,因为 word 经常把事情搞砸)。

这是我使用的代码:

Dim ppt As Object
On Error Resume Next

Set ppt = GetObject(, "PowerPoint.Application")
If ppt Is Nothing Then
Set ppt = CreateObject("PowerPoint.Application")
End If
On Error GoTo 0

Set WDReport = ppt.Presentations.Open("C:\Users\User1\Documents\Folder\Final Report Template.pptx")

WDReport.UpdateLinks

Dim FileName2 As String
FileName2 = "C:\Users\User1\Documents\Folder\Complete Report\" & Sheet14.Range("Q3").Text & " No " & Sheet14.Range("U21") & " Report" & Sheet17.Range("E10").Text & ".pdf"

WDReport.ExportAsFixedFormat FileName2, ppFixedFormatTypePDF, ppFixedFormatIntentScreen

WDReport.Close
ppt.Quit

Set ppt = Nothing
Set WDReport = Nothing 

但我一直在 WDReport.ExportAsFixedFormat FileName2, ppFixedFormatTypePDF, ppFixedFormatIntentScreen 行收到错误消息“13 类型不匹配”。我尝试用 ActivePresentation 替换 WDReport,但收到错误“429 ActiveX 组件无法创建对象”。

我已经包括了所有必要的库(Microsoft PowerPoint Object Library 15.0,与 MS Word 相同),但到目前为止没有效果。

更新:

为了说明FileName2 字符串,Ranges 用于获取以下变量数据:

Range("Q3") is Name (e.g. Test Company)
Range("U21") is Number (e.g. 1234567891011)
Range("E10") is Date (e.g. Feb-15)

所以最终的文件名应该是"Test Company No 1234567891011 Report Feb-15.pdf"。再一次,当我将 .docx 转换为 pdf 时它工作正常

如果有人能帮助我解决这个问题,我将不胜感激。

我能够重现您的错误。以下解决方案对我有用。确保您已启用对 Microsoft Powerpoint 对象库的引用。

WDReport.SaveAs FileName2, ppSaveAsPDF