从嵌入模板文件中将模板应用于Excel VBA中的powerpoint

时间:2015-10-15 01:10:43

标签: excel vba excel-vba powerpoint-vba

我正在尝试通过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

1 个答案:

答案 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是众所周知的问题,可能不是一个理想的故事情节,如文档模板:)