Knowledge base KB0209

Non è possibile riparare il file PowerPoint con PowerPoint 2013 e 2016

Problema

PowerPoint non è in grado di riparare un file PowerPoint danneggiato.

Spiegazione

Non è possibile riparare i file PowerPoint se si accede in modo programmatico alle diapositive prima che vengano riparate da PowerPoint. Tuttavia, think-cell, e probabilmente anche altri add-in, devono accedere alle diapositive quando il file è aperto senza però aver modo di verificare la presenza di un file danneggiato.

Abbiamo presentato un caso a Microsoft che, al momento, non ha ancora fornito una soluzione a riguardo. 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 è riproducibile anche senza think-cell.

Riproduzione senza think-cell

È possibile riprodurre l’errore senza think-cell se un codice qualsiasi accede alle diapositive danneggiate prima del completamento della riparazione. Nella riproduzione seguente, l’handler di eventi PresentationOpen richiama il codice che accede a tutte le diapositive quando si apre il file, ad esempio, prima della riparazione.

  1. Aprire PowerPoint 2013 o 2016 con un nuovo file vuoto.
  2. In PowerPoint accedere a Inseriscithink-cellAltroDisattiva think-cell.
  3. Premere Alt + F11 per aprire Microsoft Visual Basic for Applications.
  4. Aggiungere questo codice come un Modulo di classe e chiamarlo 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. Aggiungere questo codice come un Modulo:

    Dim cPPTObject As New cEventClass
    
    Sub Initialize_Eventhandler()
        Set cPPTObject.PPTEvent = Application
        Debug.Print "**** EventHandler active ****"
    End Sub
  6. Nella finestra presentazione di PowerPoint, premere Alt + F8 per aprire la finestra Macro
  7. Eseguire la macro Initialize_Eventhandler.
  8. Aprire ora il file PowerPoint danneggiato e tentare di ripararlo.

Questo problema non si verifica in Microsoft Office 2010.

Soluzione

Disattivare temporaneamente think-cell come soluzione alternativa finché Microsoft non avrà risolto questo bug:

  1. Disattivare think-cell in PowerPoint: Inseriscithink-cellUlteriori informazioniDisattiva think-cell
  2. Aprire il file danneggiato e ripararlo.
  3. Riattivare think-cell in PowerPoint: Inseriscithink-cellAttiva