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.
- Aprire PowerPoint 2013 o 2016 con un nuovo file vuoto.
- In PowerPoint, andare a Insert > think-cell > Tools > Deactivate think-cell.
- Premere Alt + F11 per aprire Microsoft Visual Basic for Applications.
-
Aggiungere questo codice come un Modulo di classe e assegnare il nome
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) & vbCr End Sub
-
Aggiungere questo codice come un Modulo:
Dim cPPTObject As New cEventClass Sub Initialize_Eventhandler() Set cPPTObject.PPTEvent = Application Debug.Print "**** EventHandler active ****" End Sub
- Nella finestra presentazione PowerPoint, premere Alt + F8 per aprire la finestra Macro
- Eseguire la macro Initialize_Eventhandler.
- 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:
- Disattivare think-cell in PowerPoint: Insert > think-cell > Tools > Deactivate think-cell
- Aprire il file danneggiato e ripararlo.
- Riattivare think-cell in PowerPoint: Inserisci → think-cell → Attiva