Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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_Excel_Powerpoint_Vba - Fatal编程技术网

在Excel VBA中保存PowerPoint

在Excel VBA中保存PowerPoint,excel,powerpoint,vba,Excel,Powerpoint,Vba,我有一段代码,可以创建一个新的powerpoint,其中包含excel文件中的一些图像。我想用一个字符串变量来定义文件名来保存文件。我已经尽了我应有的努力寻找解决方案,但没有成功,这让我感到惊讶,因为我试图完成的任务是多么基本。到现在为止,我已经 newPowerPoint.ActivePresentations.SaveAs filenamestring, 1 newPowerPoint.ActivePresentations.Close 但我一直收到大量错误信息。我在另一个模块中将新Pow

我有一段代码,可以创建一个新的powerpoint,其中包含excel文件中的一些图像。我想用一个字符串变量来定义文件名来保存文件。我已经尽了我应有的努力寻找解决方案,但没有成功,这让我感到惊讶,因为我试图完成的任务是多么基本。到现在为止,我已经

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