在如何用vba把ppt文档发布转化为pdf格式文件一文中,介绍了在ppt的vba中用exportasfixedformat方法将ppt转换为pdf的方法。
但是,如果是跨软件调用这个方法转换会报错,比如在excel vba中用如下的代码:
Sub QQ1722187970() Const ppFixedFormatTypePDF = 2 Const ppFixedFormatIntentPrint = 2 Const ppFixedFormatIntentScreen = 1 Dim oPPT Set oPPT = CreateObject("PowerPoint.Application") With oPPT .Visible = True With .Presentations.Open(Excel.ThisWorkbook.Path & "\" & "test.ppt") sName = .Name sName = Excel.ThisWorkbook.Path & "\" & Split(sName, ".")(0) & ".pdf" .ExportAsFixedFormat sName, ppFixedFormatTypePDF, ppFixedFormatIntentPrint .Close End With End With End Sub
将弹出“类型不匹配”的错误。
经查,这个是PPT的BUG,只需要将exportasfixedformat方法中的PrintRange参数的值设置为nothing即可。
如以下代码所示:
Sub QQ1722187970() Const ppFixedFormatTypePDF = 2 Const ppFixedFormatIntentPrint = 2 Const ppFixedFormatIntentScreen = 1 Dim oPPT Set oPPT = CreateObject("PowerPoint.Application") With oPPT .Visible = True With .Presentations.Open(Excel.ThisWorkbook.Path & "\" & "test.ppt") sName = .Name sName = Excel.ThisWorkbook.Path & "\" & Split(sName, ".")(0) & ".pdf" .ExportAsFixedFormat sName, ppFixedFormatTypePDF, ppFixedFormatIntentPrint, PrintRange:=Nothing .Close End With End With End Sub
发表评论