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

时间:2015-02-27 01:44:54

标签: excel excel-vba pdf powerpoint vba

我知道这个问题可能需要x1000次,但是我在过去3个小时内一直在努力通过excel vba将pptx转换为pdf(这是我的报告生成器所必需的,并且为了保持布局清洁广告整理我决定使用PowerPoint,因为单词经常搞砸了。)

这是我正在使用的代码:

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 Type Mismatch”。我试图用ActivePresentation替换WDReport,但收到并错误“429 ActiveX组件无法创建对象”。

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

UPD:

为了澄清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)

因此,最终文件名将类似于“测试公司编号1234567891011报告2月-15.pdf”。再次,当我将.docx转换为pdf

时,它工作得很好

如果有人能帮我解决这个问题,我真的很感激。

1 个答案:

答案 0 :(得分:1)

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

WDReport.SaveAs FileName2, ppSaveAsPDF