我知道这个问题可能需要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
时,它工作得很好如果有人能帮我解决这个问题,我真的很感激。
答案 0 :(得分:1)
我能够重现你的错误。以下解决方案对我有用。确保已启用对Microsoft Powerpoint对象库的引用。
WDReport.SaveAs FileName2, ppSaveAsPDF