Knowledge-Base-Artikel (KB0209)

Ich kann meine PowerPoint-Datei mit PowerPoint 2013 und 2016 nicht reparieren

Problem

Eine beschädigte PowerPoint-Datei kann nicht in PowerPoint repariert werden.

Erklärung

Die Reparatur von PowerPoint-Dateien schlägt fehl, wenn programmgesteuert auf Folien zugegriffen wird, bevor diese von PowerPoint repariert werden. Allerdings muss think-cell (wie andere Add-ins wahrscheinlich auch) auf Folien zugreifen, wenn die Datei geöffnet wird. Und für ein Add-in gibt es keine Möglichkeit, zu erkennen, dass eine Datei beschädigt ist.

Wir haben bereits eine Anfrage an Microsoft gestellt, aber bislang hat sich Microsoft noch nicht entschlossen, dieses Problem zu beheben. Wenn Ihr Unternehmen mit Microsoft einen Servicevertrag für den Office-Support abgeschlossen hat und Sie sich wegen einer Lösung an Microsoft wenden möchten, geben Sie bitte folgende Microsoft-interne Fallnummer an: 115040112590053. Der Fehler lässt sich ohne think-cell reproduzieren.

Reproduktion ohne think-cell

Der Fehler kann auch ohne think-cell reproduziert werden, wenn ein beliebiger Code auf die beschädigten Folien zugreift, bevor die Reparatur abgeschlossen ist. In der folgenden Reproduktion ruft der PresentationOpen-Ereignishandler einen Code auf, der auf alle Folien zugreift, wenn die Datei geöffnet wird (d. h. vor der Reparatur).

  1. Öffnen Sie PowerPoint 2013 oder 2016 mit einer neuen, leeren Datei.
  2. Klicken Sie in PowerPoint auf Einfügenthink-cellMehrthink-cell deaktivieren.
  3. Öffnen Sie Microsoft Visual Basic für Applikationen durch Drücken von Alt+F11.
  4. Fügen Sie diesen Code als Klassenmodul hinzu und geben Sie ihm den Namen cEventClass:

    Public WithEvents PPTEvent As Application
    
    Private Sub Class_Initialize()
        MsgBox "EventHandler is now active."
    End Sub
    
    Private Sub PPTEvent_PresentationOpen(ByVal pres As Presentation)
        On Error GoTo errHandle:
        
        Debug.Print "open file: " & pres.Name
        Dim i As Integer
        
        For i = 1 To pres.Slides.Count
            Debug.Print "Slide " & pres.Slides.Item(i).SlideNumber; " / " _ 
    	& pres.Slides.Count
        Next i
        
        Exit Sub
        
    errHandle:
        Debug.Print ("VBA Error: " & Err.Number & " " & Err.Description) & vbCrLf
    End Sub
  5. Fügen Sie diesen Code als Modul hinzu:

    Dim cPPTObject As New cEventClass
    
    Sub Initialize_Eventhandler()
        Set cPPTObject.PPTEvent = Application
        Debug.Print "**** EventHandler active ****"
    End Sub
  6. Drücken Sie im Präsentationsfenster von PowerPoint auf Alt+F8, um das Makrofenster zu öffnen.
  7. Führen Sie das Makro Initialize_Eventhandler aus.
  8. Öffnen Sie nun Ihre beschädigte PowerPoint-Datei und versuchen Sie, diese zu reparieren.

Bei Microsoft Office 2010 tritt dieses Problem nicht auf.

Lösung

Solange Microsoft diesen Fehler nicht behebt, können Sie als Workaround think-cell vorübergehend deaktivieren:

  1. think-cell in PowerPoint deaktivieren: Einfügenthink-cellMehrthink-cell deaktivieren
  2. Öffnen Sie die beschädigte Datei, und reparieren Sie sie
  3. think-cell in PowerPoint erneut aktivieren: Einfügenthink-cellAktivieren