We insert the pptx files into Excel, and then use the Excel VBA code (for example, below), then SaveAs the pptx file to the user's disk, then programmatically change the contents of pptx based on Excel calculations.
The Excel VBA code below works fine to control PowerPoint 2010 and 2013, but no longer works for PowerPoint 2016.
Note: I have similar code for Word, and it works great for Word 2016 (and previous versions).
Sub OpenCopyOfEmbeddedPPTFile() 'works with Office 2010 and 2013, but not on Office 2016
Dim oOleObj As OLEObject
Dim PPTApp As Object
Dim PPTPres As Object
Dim sFileName As String
Set oOleObj = ActiveSheet.Shapes("PPTObj").OLEFormat.Object 'name of the embedded pptx object
Set PPTApp = CreateObject("Powerpoint.Application")
PPTApp.Visible = True
sFileName = "C:\Users\Me\Documents\testPPT.pptx"
OleObj.Verb Verb:=xlVerbOpen 'it opens successfully
Set PPTPres = oOleObj.Object
PPTPres.SaveAs Filename:=sFileName 'fails here (in Office 2016)
PPTPres.Close
GetObject(, "PowerPoint.Application").Presentations.Open sFileName
'code to modify the Presentation (copy of the embedded pptx) based on Excel calculations
End Sub
Error:
Runtime Error '-2147467259 (80004005)': Presentation.SaveAs: An error occurred while PowerPoint was saving the file.
, PowerPoint VBA ( Excel VBA) ( Excel), , pptm. 2013 2010 .
ActivePresentation.SaveAs FileName:="C:\Users\Me\Documents\testPPT.pptm"
:
'-2147467259 (80004005)': ( ): , PowerPoint .
Windows, , . Office Mac.
? ( pptx, pptx )? Office 2016?