Base de conocimientos KB0209

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.

  1. Abra PowerPoint 2013 o 2016 con un nuevo archivo vacío.
  2. En PowerPoint, vaya a Insertarthink-cellMásDesactivar think-cell.
  3. Pulse Alt+F11 para abrir Microsoft Visual Basic para Aplicaciones.
  4. 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) & vbCrLf
    End Sub
  5. 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
  6. En la ventana de presentaciones de PowerPoint, pulse Alt + F8 para abrir la ventana Macro.
  7. Ejecute la macro Initialize_Eventhandler.
  8. 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:

  1. Desactive think-cell en PowerPoint: Insertarthink-cellMásDesactivar think-cell.
  2. Abra el archivo corrupto y repárelo.
  3. Volver a activar think-cell en PowerPoint: Insertarthink-cellActivar.