No puedo reparar mi archivo de PowerPoint con PowerPoint 2013 y 2016
Problema
PowerPoint no es capaz de reparar un archivo de PowerPoint corrupto.
Explicación
PowerPoint no es capaz de reparar el archivo si se accede a las diapositivas mediante programación antes de que PowerPoint las repare. Sin embargo, think-cell y probablemente otros complementos deben acceder a las diapositivas cuando se abre el archivo, y un complemento no puede saber si un archivo está corrupto.
Hemos abierto una incidencia con Microsoft, pero de momento Microsoft no ha hecho nada al respecto. Si su empresa tiene un contrato de soporte técnico de Microsoft Office y desea ponerse en contacto con Microsoft para solicitar una corrección, puede indicar el número de caso de Microsoft 115040112590053. El error se puede reproducir sin think-cell.
Reproducción sin think-cell
El error se puede reproducir sin think-cell si hay código que accede a las diapositivas corruptas antes de que finalice la reparación. En la siguiente reproducción, el controlador de eventos PresentationOpen llama al código que accede a todas las diapositivas cuando se abre el archivo, es decir, antes de la reparación.
- Abra PowerPoint 2013 o 2016 con un nuevo archivo vacío.
- En PowerPoint, vaya a Insert > think-cell > Tools > Deactivate think-cell.
- Pulse Alt+F11 para abrir Microsoft Visual Basic para Aplicaciones.
-
Agregue este código como Módulo de clase y póngale de nombre
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
-
Agregue este código como Módulo:
Dim cPPTObject As New cEventClass Sub Initialize_Eventhandler() Set cPPTObject.PPTEvent = Application Debug.Print "**** EventHandler active ****" End Sub
- En la ventana de presentaciones de PowerPoint, pulse Alt + F8 para abrir la ventana Macro.
- Ejecute la macro Initialize_Eventhandler.
- Ahora abra el archivo corrupto de PowerPoint e intente repararlo.
Este problema no existe con Microsoft Office 2010.
Solución
Hasta que Microsoft corrija este error, puede desactivar think-cell temporalmente como una solución alternativa:
- Desactive think-cell en PowerPoint: Insert > think-cell > Tools > Deactivate think-cell
- Abra el archivo corrupto y repárelo.
- Volver a activar think-cell en PowerPoint: Insertar → think-cell → Activar