在Excel VBA中保存PowerPoint
我有一段代码,可以创建一个新的powerpoint,其中包含excel文件中的一些图像。我想用一个字符串变量来定义文件名来保存文件。我已经尽了我应有的努力寻找解决方案,但没有成功,这让我感到惊讶,因为我试图完成的任务是多么基本。到现在为止,我已经在Excel VBA中保存PowerPoint,excel,powerpoint,vba,Excel,Powerpoint,Vba,我有一段代码,可以创建一个新的powerpoint,其中包含excel文件中的一些图像。我想用一个字符串变量来定义文件名来保存文件。我已经尽了我应有的努力寻找解决方案,但没有成功,这让我感到惊讶,因为我试图完成的任务是多么基本。到现在为止,我已经 newPowerPoint.ActivePresentations.SaveAs filenamestring, 1 newPowerPoint.ActivePresentations.Close 但我一直收到大量错误信息。我在另一个模块中将新Pow
newPowerPoint.ActivePresentations.SaveAs filenamestring, 1
newPowerPoint.ActivePresentations.Close
但我一直收到大量错误信息。我在另一个模块中将新PowerPoint定义为公共Public newPowerPoint As powerpoint.Application
有什么建议吗?我认为您是在标注变量opptap,而没有实际创建Powerpoint.Application的实例
Public ppApp As PowerPoint.Application
Sub PPTFile()
Dim ppPres As Presentation
Dim fileNameString As String
fileNameString = "C:\testPPT.pptx" '<change to your file path/name
'Create an instance of PPT to work with
Set ppApp = CreateObject("Powerpoint.Application")
ppApp.Visible = True
'Create a new presentation (or you can access an existing file with ppApp.Presentations.Open
Set ppPres = ppApp.Presentations.Add
'Save:
ppPres.SaveAs fileNameString, 1
'Quit the instance of PPT that you initiated above.
ppApp.Quit
End Sub
或者,您可以使用旧的.Add
方法,该方法接受布局
参数,而不是.AddSlide
(需要自定义布局):
ppPres.Slides.Add sldCount+1,ppLayoutBlank
您从哪里得到错误(在SaveAs
或在关闭时)?您遇到了什么错误?由于对象要求错误,已将newPowerPoint与Opptap一起关闭。OPPTAP也被宣布为公共的。因此,我现在使用opptap得到的错误消息是SaveAs行上的“objectvariable或with block variable not set”。我在另一个模块上的公开声明是。。。。Public newPowerPoint作为powerpoint。应用程序Public opptap作为对象Debug.Print opptap什么都不是
。“立即”窗口中发生了什么?在Set ppPres=ppApp.Presentations.add中找到了“编译错误:未找到方法或数据成员”。您使用的Excel的操作系统和版本是什么?在Win 7 XP上的Excel 2010中工作良好。如果手动键入该行,脚本辅助程序将显示ppApp
的可用方法,并且只要启用了对Powerpoint对象模型的引用(没有该模型,此代码将无法初始化)。添加应该是ppApp.Presentations
的可用方法。这不是你的情况吗?嗨,大卫-很抱歉耽搁了…我被另一个项目转移了。我使用的是启用ppt对象模型引用的Windows 7 Excel 2007。添加是我屏幕上可用的方法。运行时,我得到了一个确切的错误:知道为什么吗?ActivePresentation
不是ppPres
的有效成员,ppPres是演示文稿
。请尝试ppPres.Slides.AddSlide ppPres.Slides.count+1…
另外,这不是相同的错误,也不是您前面描述的相同位置。您之前说过您在ppApp.Presentations.Add上有一个错误。
Dim sldCount As Integer
sldCount = ppPres.Slides.count
ppPres.Slides.AddSlide sldCount + 1, ppPres.Slides(sldCount).CustomLayout
'Once you've added the slide, then set using Layout:
ppPres.Slides(sldCount + 1).Layout = ppLayoutBlank