Как запустить макрос PPTM из Excel для встроенного файла PPTM - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть файл Excel с .PPTM, встроенным в лист (на листе ничего больше нет). Я хочу запустить макрос, который находится в файле PPTM. Проблема в последней строке кода для запуска макроса. Ячейка на листе «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

1 Ответ

0 голосов
/ 12 апреля 2019

Спасибо, Шьям, это было частью проблемы.Поскольку файл открывается через 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
...