2016-07-20 74 views
4

Wir betten PPTX-Dateien in Excel, dann Excel VBA-Code (wie unten) zu öffnen, speichern Sie dann als pptx-Datei auf das Laufwerk des Benutzers, dann den Inhalt pptx programmgesteuert ändern basierend auf Excel-Berechnungen.
Der Excel VBA-Code unten funktioniert gut zum Steuern von PowerPoint 2010 und 2013, funktioniert aber nicht mehr für PowerPoint 2016.
Hinweis: Ich habe ähnlichen Code für Word und es funktioniert gut für Word 2016 (und früheren Versionen).Excel VBA kann nicht speichern als eingebettete PowerPoint-Präsentation in Office 2016

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 

Fehler:
Laufzeitfehler '-2147467259 (80004005)': Presentation.SaveAs: Ein Fehler ist aufgetreten, während Powerpoint die Datei spart.

Auch das folgende PowerPoint VBA (nicht Excel VBA) funktioniert gut für normale Dokumente (nicht in Excel eingebettet), aber scheitert, wenn ich es in einem geöffneten eingebetteten PPTM ausführen. Funktioniert in 2013 und 2010 eingebettete PPTMs.

ActivePresentation.SaveAs FileName:="C:\Users\Me\Documents\testPPT.pptm" 

Fehler: Laufzeitfehler '-2147467259 (80004005)': Präsentation (unbekanntes Element): Ein Fehler ist aufgetreten, während Powerpoint die Datei spart.

Windows OS-Version scheint keine Rolle zu spielen. Funktioniert nicht mit Office für Mac.

Sie können diesen Fehler beheben oder umgehen? Oder gibt es eine andere Möglichkeit, dasselbe zu tun (eine Kopie des eingebetteten pptx so modifizieren, dass das eingebettete pptx nicht modifiziert wird)? Oder tritt dieser Fehler nur auf unseren Office 2016-PCs auf?

+1

Ich bin in der Lage in der Nähe des genannte Problem in Powerpoint 2016. –

+0

nur als Referenz, zur Zeit noch keine Antworten von Lieferanten in http://answers.microsoft repro. com/de-de/msoffice/forum/msoffice_excel-msoffice_custom/excel-vba-fehler-kann nicht-saveas-an-embedded/4adf17d5-8b2f-4328-b94a-8238c2effbda – FtLie

+0

Ich bekomme auch diesen Fehler, wenn ich versuche zu speichern ein Ordner oder Laufwerk, für das ich keine Berechtigung zum Speichern habe. – mooseman

Antwort

2

PowerPoint 2016 scheint zu fehlschlagen, wenn SaveAs oder SaveCopyAs für eine eingebettete Präsentation verwendet wird.

Die Problemumgehung besteht darin, die Präsentation zu öffnen, eine neue Präsentation zu erstellen und dann den Inhalt von der eingebetteten Präsentation in die neue Präsentation zu kopieren. Sie können dann die eingebettete Präsentation schließen und die neue Präsentation speichern, wie Sie möchten.

Ich habe das Kopieren der Folien demonstriert, aber Sie müssen möglicherweise programmgesteuert BuiltInDocumentProperties und andere Inhalte ohne Folie kopieren.

Option Explicit 

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 PPTNewPres As Object 
    Dim sFileName As String 
    Set oOleObj = ActiveSheet.Shapes("PPTObj").OLEFormat.Object 'name of the embedded pptx object 

    oOleObj.Verb 3 
    Set PPTPres = oOleObj.Object 

    Set PPTApp = PPTPres.Application 
    PPTApp.Visible = True 

    'We can't save the embedded presentation in 2016, so let's copy the clides to a new presentation 
    Set PPTNewPres = PPTApp.Presentations.Add 
    PPTPres.Slides.Range.Copy 
    PPTNewPres.Slides.Paste 

    'We may need to copy other things, like BuiltInDocumentProperties 
    'TODO 

    'Close the original 
    PPTPres.Close 

    sFileName = "C:\Users\Me\Documents\testPPT121.pptx" 
    sFileName = "C:\users\andrew\desktop\testPPT12111-FOOJANE.pptx" 
    PPTNewPres.SaveAs sFileName 

    'code to modify the Presentation (copy of the embedded pptx) based on Excel calculations 

    'Quit PPT 
    'PPTNewPres.Close 
    'PPTApp.Quit 

End Sub 
0

fand ich diese mögliche Antwort in einem anderen Forum und es funktionierte für mich als Kopie

ändern

PPTPres.SaveAs Filename:=sFileName 

zu

PPTPres.SaveAs sFileName 
eine PPTM Datei als PPTX-Datei speichern

Meine war:

PPTPres.SaveCopyAs sFileName 

ich dann die neue Datei öffnen und die Datei PPTM

+0

Das behebt mein Problem nicht. Das Problem tritt nur auf (kann nicht gespeichert werden), wenn das PPTX in Excel eingebettet ist. Bei einem eigenständigen PPTM funktioniert eine der oben genannten Arbeiten. –