如何从 excel 为嵌入式 PPTM 文件 运行 PPTM 宏

How to Run PPTM macro from excel for Embedded PPTM file

我有一个 Excel 文件,其中一个 .PPTM 嵌入到 sheet 中(sheet 上没有其他内容)。我想要 运行 PPTM 文件中的宏。 问题是 运行 宏的最后一行代码。 worksheet "PPTM" 中包含嵌入文件的单元格的公式为“=EMBED("Presentation",”")”

Sub run_ppt_macro()
fName = ActiveWorkbook.Name
Path = ActiveWorkbook.Path


Worksheets("PPTM").OLEObjects("PPT_Temp_19").Verb 0
Dim PPTObj As Object
Set myPP = GetObject(, "PowerPoint.Application")

Set PPTObj = myPP.ActivePresentation

PPTObj.Run PPTObj.Name & "!Main", fName, Path
End Sub

谢谢 Shyam,这是问题的一部分。因为该文件是通过 IE 或电子邮件打开的,所以它在一个非常奇怪的地方打开,导致宏出错。在创建新报告之前,我通过将数据 (XLSM) 文件和模板 (PPTM) 文件保存到临时目录解决了这个问题。

Sub auto_open()
Application.ScreenUpdating = False
Application.DisplayAlerts = False

fName = ActiveWorkbook.Name

tempath = IIf(Environ$("tmp") <> "", Environ$("tmp"), Environ$("temp"))    'finds the temporary evironment on the current machine
ActiveWorkbook.SaveAs Filename:=(tempath & "\" & fName)


MsgBox "Your report " & tempath & "\" & fName & " should be completed within 5 minutes." & Chr(10) & Chr(10) & "Please check your PowerPoint application at that time." & Chr(10) & Chr(10) & "Thank you.", vbInformation


Dim PPTObj As Object
Worksheets("PPTM").OLEObjects("PPT_Temp_19").Verb 3  'opens the embedded object

Set myPP = GetObject(, "PowerPoint.Application")   'get the PowerPoint object
Set PPTObj = myPP.ActivePresentation  'Get the presentation that was opened

tempath = IIf(Environ$("tmp") <> "", Environ$("tmp"), Environ$("temp"))    'finds the temporary evironment on the current machine
Template = tempath & "\template.pptm"   'creates path and name for temp file
PPTObj.SaveAs Filename:=(Template)      'saves temp file

myPP.Presentations.Open (Template)    'opens the saved file

Worksheets("PPTM").OLEObjects("PPT_Temp_19").Object.Close


myPP.Run Template & "!Main", fName, tempath   'runs the macro

Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub