我正在尝试通过excel将模板应用于powerpoint。 powerpoint模板通过insert - >嵌入我的excel文件中。宾语。我已成功使用lag
方法从文件中应用模板,但我无法调整代码以引用嵌入式powerpoint模板。我尝试使用OLEObject,但我担心这是不正确的。请查看以下代码。
.applytemplate
更新
Sub ppCreate()
Dim myPP As PowerPoint.Application
Dim myPres As PowerPoint.Presentation
Dim activeSlide As PowerPoint.Slide
Dim ppObj As OLEObject
' Create instance of PowerPoint
Set myPP = CreateObject("Powerpoint.Application")
' For automation to work, PowerPoint must be visible
myPP.Visible = True
' Create a presentation
Set myPres = myPP.Presentations.Add
' Set slide view to Slide Only
myPP.ActiveWindow.ViewType = ppViewSlide
'Resize to 4:3
myPres.PageSetup.SlideSize = 2
'Add a slide
Set activeSlide = myPres.Slides.Add(1, ppLayoutBlank)
'Import Template
Worksheets("CBRDATA").Select
Set ppObj = ActiveSheet.OLEObjects("ppObj") 'NOT WORKING
myPres.ApplyTemplate (ppObj) 'NOT WORKING
myPres.ApplyTemplate "C:\CBR_TEMPLATE_COVER.potx" 'WORKING
Worksheets("CBR").Select
End Sub
答案 0 :(得分:1)
这不起作用,因为ActiveSheet.OLEObjects("ppObj")
是OLEObject
类型,而不是PowerPoint.Presentation
。
Set ppObj = ActiveSheet.OLEObjects("ppObj") 'NOT WORKING
当手动双击对象打开 POTX文件时(实际上它使用POTX作为模板打开一个新的空白PPTX),上面的赋值语句不能执行任何操作,它试图将OLEObject放在需要Presentation的地方,而且总是会失败。
那么,如何打开" OLEObject? OLEObject有.Verb
方法,以下将执行对象的默认操作,在嵌入式包对象的情况下,通常是"打开&#34 ;他们。
解决方案
'Import Template
'## This should Open the template
Worksheets("CBRDATA").OLEObjects("ppObj").Verb 0
'## Assign the ActivePresentation to your ppObj variable
Set ppObj = myPP.ActivePresentation
编辑:嵌入式OLEObjects是众所周知的问题,可能不是一个理想的故事情节,如文档模板:)