Desde hace días por una actualización de seguridad Excel (KB3115262 del 12 de julio de 2016), no he podido ver los archivos generados desde el sistema y los usuarios del mismo empezaron a presentar el mismo problema. Al intentar abrirlos, el Excel no responde o abre en gris, sin mostrar ninguna información.
Este problema es generado principalmente por los archivos que no se codifican correctamente al generarse desde otro sistema, por ejemplo cuando se general desde php convirtiendo el html con cabeceras de tipo «application/vnd.ms-excel». Al abrir dichos archivos puede aparecer un mensaje: “El formato y la extensión de archivo de –NombreArchivo.xls- no coinciden. Puede que el archivo esté dañado o no sea seguro. No lo abra a menos que confíe en su origen. ¿Desea Abrirlo de todos modos? ” El cual con simplemente indicar “Sí”, ya podremos acceder.
Sin embargo en ocasiones puede no aparecer el mensaje, quedando la hoja en blanco o gris:
Solución
Lo ideal es utilizar librerías como PHPExcel https://phpexcel.codeplex.com/ la cual ya maneja internamente estas codificaciones. Si no puedes cambiar todos los reportes a esta librería, también puedes intentar lo siguiente:
Deshabilitar las opciones de vista protegida para archivos descargados de internet. Esto puede ser riesgoso si nos pasamos el día abriendo cualquier archivo que descargamos de internet pero no será un problema si conocemos que archivos estamos abriendo y su origen (sistema propio).
Para ello abrimos el Excel y vamos a las opciones “Archivo -> Opciones -> Centro de confianza -> Configuración del centro de confianza -> Vista Protegida” y quitamos la primera casilla “Habilitar la Vista protegida para los archivos procedentes de Internet”.
También hay otros medios que se pueden deshabilitar, “archivos de ubicaciones no seguros” y “datos adjuntos de Outlook”, que puede suceder el mismo inconveniente si enviamos dichos archivos por correo.
Adicional
Con esto sería suficiente, pero si el problema persiste o si tiende a cambiarse la configuración con cada nueva actualización, podemos desinstalar solo dicha actualización, la KB3115262. La podemos buscar en “Panel de control -> Programas -> Programas y características -> Ver actualizaciones instaladas”.
Podemos buscar por criterio “Security” o por la actualización KB3115262 directamente, en este caso tengo el office 2013, debería ser el mismo para los otros.
Toma en cuenta que puede volverse a instalar en otras actualizaciones o si tienes el Windows update automático, antes en Windows anteriores podíamos elegir que instalar y que actualizaciones evitar, ahora en Windows 10 no se puede.
Para evitar la actualización podemos deshabilitarla para productos de Microsoft y de esta manera evitar que se actualice el office pero preservando las actualizaciones de Windows.
Vamos a “Windows update” o “Configuración de windows update” e ingresamos a opciones avanzadas.
Y Desactivamos la primera casilla:
Otra forma de evitar la actualización es ocultándola, como en Windows 10 ya no existe esa opción, Microsoft tiene un programa que podemos descargar e instalar para ocultar actualizaciones. Ver artículo: Ocultar actualizaciones en windows 10
Opcional
Si quieres evitar el dialogo al abrir un Excel, ejemplo:
Podemos evitarlo editando el registro de Windows, ingresamos a “regedit”, ya sea buscándolo en el buscador de inicio o desde ejecutar.
Luego nos dirigimos a la entrada donde tenemos instalado nuestro office, puede variar según la versión de office, 14, 15, 16 o incluso tener los tres o más.
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\15.0\Excel\Security
Al seleccionar dicha carpeta security, a la derecha se desplegará las claves u opciones establecidas, en este caso buscamos la que indique ExtensionHardening pero comúnmente no existe y debemos crearla. Si ya existe simplemente le damos doble clic y establecemos el valor en cero.
Si no existe:
Hacemos clic derecho en la carpeta “Security” y luego en “Nuevo -> Valor de Dword (32 bits)”
El cual creamos con nombre: ExtensionHardening
Y automáticamente se crea en cero, podemos hacer doble clic para verificar:
El valor en 1 indica que preguntará al abrir archivos desconocidos de Excel, el valor 2 no aparecerá ningún dialogo y no abrirá los archivos dejando el Excel en gris, la opción 0 indica que no preguntará y abrirá cualquier archivo.
Si trabajamos con PHPExcel, no necesitamos realizar ningún cambio porque los archivos generados están correctamente codificados y no aparece ningún dialogo.
Grégor, mil gracias por esta nota. Me salvó el día. Un abrazo.