Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Excel和VBA从PowerPoint文件生成PDF文件_Excel_Vba_Powerpoint - Fatal编程技术网

使用Excel和VBA从PowerPoint文件生成PDF文件

使用Excel和VBA从PowerPoint文件生成PDF文件,excel,vba,powerpoint,Excel,Vba,Powerpoint,我正在尝试从PowerPoint文件生成PDF文件。这一切都应该通过单击带有VBA脚本的Excel文件中的按钮来完成。到目前为止,我已经成功地编写了下面的代码。它会正确打开PowerPoint文件,但也会显示错误:“对象不支持此属性或方法” strPath=“Q:\X\Test.pptx” 设置objApp=CreateObject(“Powerpoint.Application”) objApp.Visible=True“False”或True 设置wbToRun=objApp.Present

我正在尝试从PowerPoint文件生成PDF文件。这一切都应该通过单击带有VBA脚本的Excel文件中的按钮来完成。到目前为止,我已经成功地编写了下面的代码。它会正确打开PowerPoint文件,但也会显示错误:“对象不支持此属性或方法”

strPath=“Q:\X\Test.pptx”
设置objApp=CreateObject(“Powerpoint.Application”)
objApp.Visible=True“False”或True
设置wbToRun=objApp.Presentations.Open(strPath)
wbToRun.ExportAsFixedFormat“”、ppFixedFormatTypePDF、ppFixedFormatIntentScreen、msoCTrue、PPPrintHandoutAuthorIzontalFirst、ppPrintOutputBuildSlides、msoFalse、False、False、False、False
objApp.DisplayAlerts=False
wbToRun,关闭
objApp.退出

希望你能帮助我解决我的问题。谢谢。

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

Sub ppttest5()

Dim savePath As String
Dim AppPowerPoint
Dim wbToRun

Set AppPowerPoint = CreateObject("PowerPoint.Application")
 'Location of saved file
savePathFN = "C:\mydirb\test.pdf" 'change as per your path
AppPowerPoint.Visible = True

Set wbToRun = AppPowerPoint.Presentations.Open("C:\mydirb\Test.pptx") 'change location of file path

wbToRun.SaveAs savePathFN, ppSaveAsPDF
wbToRun.Close


AppPowerPoint.Quit
Set OpenPresentation = Nothing
Set AppPowerPoint = Nothing

End Sub

哪一行触发了错误?这一行:
wbToRun.ExportAsFixedFormat“”、ppFixedFormatTypePDF、ppFixedFormatIntentScreen、msoCTrue、ppPrintHandoutAuthorizontalFirst、ppPrintOutputBuildSlides、msoFalse、、False、False、False、False
谢谢!但是,仍然收到一个错误:“系统错误&H80070057(-2147024809)参数不正确。”你知道可能是什么错误吗?@user3527005我上传了一个压缩文件,其中包含示例pptx文件、代码文件和生成的pdf文件。请在维护相同或类似的目录结构时进行检查,并检查对您的Power Point对象库版本的引用。我还检查了使用
ExportAsFixedFormat
运行的程序,它在这一行给出了类型不匹配错误。这是一个常见的错误,有很多建议可以克服这个错误。我的dropbox参考是。我在一些尝试中的努力无法解决。@user3527005关于“系统错误&H80070057(-2147024809)”,其中一个可能的原因可能是形状名称拼写错误。在一些引用之后,我向您推荐了我的试用方法,在
ExportAsFixedFormat
上获得类型不匹配后,遵循所有预防措施,如正确的变量和对所有可选参数的引用,问题无法解决,但
SaveasPDF
成功。非常感谢。还是有错误。我尝试过的一些有效方法是:
wbToRun.SaveAs“Q:\X\1.pdf”
,因此基本上是“ppSaveAsPDF”部分抛出错误。有其他选择吗?@user3527005您可以在VBE Tools-References中根据您的版本尝试我的宏文件调整Power Point对象库吗?您是否仍然收到错误。我可以在2016版本的系统上生成带有建议代码的pdf。我还将生成的pdf文件也包含在压缩文件夹中。您也可以在其他计算机上尝试,因为如果Excel文件损坏,也会生成系统错误。
Sub ppttest5()

Dim savePath As String
Dim AppPowerPoint
Dim wbToRun

Set AppPowerPoint = CreateObject("PowerPoint.Application")
 'Location of saved file
savePathFN = "C:\mydirb\test.pdf" 'change as per your path
AppPowerPoint.Visible = True

Set wbToRun = AppPowerPoint.Presentations.Open("C:\mydirb\Test.pptx") 'change location of file path

wbToRun.SaveAs savePathFN, ppSaveAsPDF
wbToRun.Close


AppPowerPoint.Quit
Set OpenPresentation = Nothing
Set AppPowerPoint = Nothing

End Sub