KB0209: Impossibile ripristinare il file PowerPoint con PowerPoint 2013 o versioni successive

Problema

PowerPoint non riesce a ripristinare un file PowerPoint danneggiato.

Spiegazione

Il ripristino dei file PowerPoint non riesce se si accede alle diapositive a livello di codice prima che PowerPoint le ripristini. Tuttavia, thinkcell e molto probabilmente anche altri componenti aggiuntivi devono accedere alle diapositive quando il file viene aperto e non esiste un modo per un componente aggiuntivo di sapere che un file è danneggiato.

Abbiamo aperto un caso presso Microsoft, ma finora Microsoft non ha deciso di correggerlo. Se la società ha un contratto di assistenza Microsoft Office e desidera contattare Microsoft per risolvere un errore, occorre fare riferimento al numero di caso Microsoft 115040112590053. L'errore può essere riprodotto senza thinkcell. Scopri di più

Riproduzione senza thinkcell

L'errore può essere riprodotto senza thinkcell se un qualsiasi codice accede alle diapositive danneggiate prima del completamento del ripristino. Nella riproduzione seguente, il gestore eventi PresentationOpen chiama il codice che accede a tutte le diapositive all'apertura del file, cioè prima del ripristino.

  1. Aprire PowerPoint 2013 o versione successiva con un nuovo file vuoto.
  2. In PowerPoint, passare a Insert > thinkcell > Tools Icona Menu strumenti > Deactivate thinkcell.
  3. Premere Alt + F11 per aprire Microsoft Visual Basic for Applications.
  4. Aggiungere questo codice come Class Module e assegnargli il nome cEventClass:

    Public WithEvents PPTEvent As Application
    
    Private Sub Class_Initialize()
        MsgBox "Il gestore eventi è ora attivo."
    End Sub
    
    Private Sub PPTEvent_PresentationOpen(ByVal pres As Presentation)
        On Error GoTo errHandle:
        
        Debug.Print "apri file: " & pres.Name
        Dim i As Integer
        
        For i = 1 To pres.Slides.Count
            Debug.Print "Diapositiva " & pres.Slides.Item(i).SlideNumber; " / " _ 
    	& pres.Slides.Count
        Next i
        
        Exit Sub
        
    errHandle:
        Debug.Print ("Errore VBA: " & Err.Number & " " & Err.Description) & vbCr
    End Sub

  5. Aggiungere questo codice come Module:

    Dim cPPTObject As New cEventClass
    
    Sub Initialize_Eventhandler()
        Set cPPTObject.PPTEvent = Application
        Debug.Print "**** Gestore eventi attivo ****"
    End Sub

  6. Nella finestra della presentazione di PowerPoint, premere Alt + F8 per aprire la finestra Macro
  7. Run la macro Initialize_Eventhandler.
  8. Ora aprire il file PowerPoint danneggiato e tentare di ripristinarlo.

Soluzione

Finché Microsoft non corregge questo bug, è possibile disattivare temporaneamente thinkcell come soluzione alternativa:

  1. Disattivare thinkcell in PowerPoint: Insert > thinkcell > Tools Icona Menu strumenti > Deactivate thinkcell
  2. Aprire il file danneggiato e ripararlo
  3. Riattivare thinkcell in PowerPoint: Insert > thinkcell > Activate