suministrar - ¿Controles ActiveX de Microsoft Excel deshabilitados?
microsoft visual basic para aplicaciones excel 2016 errores al cargar (11)
Tengo algunas hojas de cálculo de Excel que usan casillas de verificación ActiveX para controlar cierta actividad. Trabajaron recientemente, pero hoy comenzaron a dar errores. Un colega me alertó sobre esto, pero todavía funcionaba en mi computadora. Verifiqué su versión de Excel con la mía y la suya era más nueva. Noté que había nuevas actualizaciones de Windows, así que hice la actualización. Después de aplicar las actualizaciones pendientes, ya no funciona en mi computadora. Ya no puedo marcar las casillas de verificación ActiveX y, como parte de intentar depurar, parece que ni siquiera puedo agregar un control ActiveX a ninguna hoja de trabajo, ni siquiera a una nueva hoja de trabajo. Aparece un cuadro de diálogo de error que dice: "No se puede insertar el objeto". (Todavía puedo agregar controles de formulario, pero no ActiveX). ¿Alguien más está experimentando esto después de una actualización reciente? ¿Alguna sugerencia?
Gracias,
Miguel
Aquí está la mejor respuesta que he encontrado en el blog del equipo de soporte de Microsoft Excel
Para algunos usuarios, los controles de formularios (FM20.dll) ya no funcionan como se esperaba después de instalar las actualizaciones de diciembre de 2014. En ocasiones, se presentan problemas, como cuando abren archivos con proyectos VBA existentes utilizando controles de formularios, intenta insertar un control de formularios en una nueva hoja de trabajo o ejecuta un software de terceros que puede usar estos componentes.
Puede recibir errores como:
"No se puede insertar el objeto" "La biblioteca de objetos no es válida o contiene referencias a definiciones de objetos que no se pudieron encontrar"
Además, es posible que no pueda usar o cambiar las propiedades de un control ActiveX en una hoja de trabajo o recibir un error al intentar referirse a un control ActiveX como miembro de una hoja de trabajo a través del código. Pasos a seguir después de la actualización:
Para resolver este problema, debe eliminar las versiones en caché de las bibliotecas de tipos de control (archivos de extensión) en el equipo cliente. Para hacer esto, debe buscar en su disco duro archivos que tengan la extensión de nombre de archivo ".exd" y eliminar todos los archivos .exd que encuentre. Estos archivos .exd se volverán a crear automáticamente cuando use los nuevos controles la próxima vez que use VBA. Estos archivos de extensión estarán bajo el perfil del usuario y también pueden estar en otras ubicaciones, como las siguientes:
% appdata% / Microsoft / forms
% temp% / Excel8.0
% temp% / VBE
Solución de secuencias de comandos:
Debido a que este problema puede afectar a más de una máquina, también es posible crear una solución de secuencias de comandos para eliminar los archivos EXD y ejecutar la secuencia de comandos como parte del proceso de inicio de sesión utilizando una política. El script que necesitaría debe contener las siguientes líneas y deberá ejecutarse para cada USUARIO ya que los archivos .exd son específicos del USUARIO.
del% temp% / vbe / *. exd
del% temp% / excel8.0 / *. exd
del% appdata% / microsoft / forms / *. exd
del% appdata% / microsoft / local / *. exd
del% appdata% / Roaming / microsoft / forms / *. exd
del% temp% / word8.0 / *. exd
del% temp% / PPT11.0 / *. exd
Paso adicional:
Si los pasos anteriores no resuelven su problema, otro paso que se puede probar (consulte la advertencia a continuación):
En una máquina completamente actualizada y después de eliminar los archivos .exd, abra el archivo en Excel con permisos de edición.
Abra Visual Basic para Aplicaciones> modifique el proyecto agregando un comentario o edición de algún tipo a cualquier módulo de código> Depurar> Compilar VBAProject.
Guarde y vuelva a abrir el archivo. Prueba de resolución. Si se resuelve, proporcione este proyecto actualizado a usuarios adicionales.
Advertencia: si este paso resuelve su problema, tenga en cuenta que después de implementar este proyecto actualizado para los demás usuarios, estos usuarios también necesitarán que se apliquen las actualizaciones en sus sistemas y también se eliminen los archivos .exd.
Si esto no resuelve su problema, puede ser un problema diferente y puede ser necesaria una mayor resolución de problemas.
Microsoft está trabajando actualmente en este problema. Mire el blog para actualizaciones.
Con Windows 8.1 no pude encontrar ningún archivo .exd usando la búsqueda de Windows.
Por otro lado, un comando cmd
dir *.exd /S
encontró el único archivo en mi sistema.
Desde otros foros, he aprendido que se debe a la Actualización de MS y que una buena solución es simplemente eliminar el archivo MSForms.exd de cualquier subcarpeta Temp en el perfil del usuario. Por ejemplo:
C:/Users/[user.name]/AppData/Local/Temp/Excel8.0/MSForms.exd
C:/Users/[user.name]/AppData/Local/Temp/VBE/MSForms.exd
C:/Users/[user.name]/AppData/Local/Temp/Word8.0/MSForms.exd
Por supuesto, la aplicación (Excel, Word ...) debe estar cerrada para eliminar este archivo.
Era KB2553154 . Microsoft necesita lanzar una solución. Como desarrollador de aplicaciones Excel, no podemos acceder a todas las computadoras de nuestros clientes y eliminar archivos de ellas. Nos culpan de algo que Microsoft causó.
Finalmente encontré esta respuesta en el KB oficial de Microsoft:
http://support.microsoft.com/kb/3025036/EN-US
No hay información nueva aquí que la que tenemos en las respuestas anteriores, pero al menos reconoce que Microsoft está al tanto del problema.
Instrucciones simplificadas para usuarios finales. Siéntase libre de copiar / pegar lo siguiente.
Aquí se explica cómo solucionar el problema cuando se presenta:
- Cierre todos sus programas y archivos de Office.
- Abra el Explorador de Windows y escriba% TEMP% en la barra de direcciones, luego presione Entrar. Esto lo llevará a la carpeta temporal del sistema.
- Localice y elimine las siguientes carpetas: Excel8.0, VBE, Word8.0
- Ahora intente usar su archivo nuevamente, no debería tener ningún problema.
Es posible que deba esperar hasta que se produzca el problema para que esta solución funcione. Aplicarlo prematuramente (antes de que la Actualización de Windows se instale en su sistema) no ayudará.
La mejor fuente de información y actualizaciones sobre este tema que pude encontrar está en los blogs de TechNet »El blog del equipo de soporte de Microsoft Excel (como se mencionó):
En marzo de 2015 se lanzó una revisión además de las instrucciones automáticas de reparación y manual, y también está disponible en Windows Update.
La última actualización y corrección de Microsoft: 3025036 Error "No se puede insertar el objeto" en una solución de Office personalizada de ActiveX después de instalar la actualización de seguridad MS14-082
ESTADO: Actualización 10 de marzo de 2015:
Las revisiones para este problema se han publicado en las actualizaciones de marzo de 2015 para Office 2007, 2010 y 2013.
Información general sobre el problema:
Para algunos usuarios, los controles de formulario (FM20.dll) ya no funcionan como se esperaba después de instalar MS14-082 Actualizaciones de seguridad de Microsoft Office para diciembre de 2014. En ocasiones se presentan problemas, como cuando abren archivos con proyectos VBA existentes usando controles de formularios, intente para insertar un control de formularios en una nueva hoja de trabajo o ejecutar software de terceros que pueda usar estos componentes.
https://technet.microsoft.com/en-us/library/security/ms14-082.aspx
Puede recibir errores como: "No se puede insertar el objeto"; "La biblioteca de objetos no es válida o contiene referencias a definiciones de objetos que no se pudieron encontrar"; "El programa utilizado para crear este objeto es Formularios. Ese programa no está instalado en su computadora o no responde. Para editar este objeto, instale Formularios o asegúrese de que todos los cuadros de diálogo en Formularios estén cerrados". [...] Además, es posible que no pueda usar o cambiar las propiedades de un control ActiveX en una hoja de trabajo o recibir un error al intentar referirse a un control ActiveX como miembro de una hoja de trabajo a través del código.
Manual y soluciones adicionales:
Solución de secuencias de comandos:
Debido a que este problema puede afectar a más de una máquina, también es posible crear una solución de secuencias de comandos para eliminar los archivos EXD y ejecutar la secuencia de comandos como parte del proceso de inicio de sesión utilizando una política. El script que necesitaría debe contener las siguientes líneas y deberá ejecutarse para cada USUARIO ya que los archivos .exd son específicos del USUARIO.
del %temp%/vbe/*.exd
del %temp%/excel8.0/*.exd
del %appdata%/microsoft/forms/*.exd
del %appdata%/microsoft/local/*.exd
del %temp%/word8.0/*.exd
del %temp%/PPT11.0/*.exd
Paso adicional:
Si los pasos anteriores no resuelven su problema, otro paso que se puede probar (consulte la advertencia a continuación):
En una máquina completamente actualizada y después de eliminar los archivos .exd, abra el archivo en Excel con permisos de edición.
Abra Visual Basic para Aplicaciones> modifique el proyecto agregando un comentario o edición de algún tipo a cualquier módulo de código> Depurar> Compilar VBAProject.
Guarde y vuelva a abrir el archivo. Prueba de resolución.
Si se resuelve, proporcione este proyecto actualizado a usuarios adicionales.
Advertencia: si este paso resuelve su problema, tenga en cuenta que después de implementar este proyecto actualizado para los demás usuarios, estos usuarios también necesitarán que se apliquen las actualizaciones en sus sistemas y también se eliminen los archivos .exd.
Los consejos en KB y superiores no funcionaron para mí. Descubrí que si un usuario de Excel 2007 (con o sin la actualización de seguridad; no estoy seguro de las circunstancias exactas que causan esto) guarda el archivo, el error original regresa.
Descubrí que la forma más rápida de reparar el archivo nuevamente es eliminar todo el código VBA. Salvar. Luego reemplace el código VBA (copiar / pegar). Salvar. Antes de intentar esto, elimino primero los archivos .EXD, porque de lo contrario obtengo un error al abrir.
En mi caso, no puedo actualizar / actualizar a todos los usuarios de mi archivo Excel en varias ubicaciones. Dado que el problema vuelve después de que algunos usuarios guarden el archivo de Excel, voy a tener que reemplazar el control ActiveX con algo más.
Quiero proporcionar una respuesta que funcionó como lo único para mí (me doy cuenta de que podría ser el único). Tenía en una macro que estaba llamando usando la cinta. Tenía el siguiente código:
colStore = new Collection
No sabía que arrojaba un error, así que estaba desconcertado e intenté todo aquí. El botón simplemente dejó de funcionar y no pude hacerlo funcionar. Cuando noté el error y lo corregí a:
Set colStore = new Collection
Comenzó a funcionar nuevamente. Absolutamente extraño si me preguntas, pero tal vez ayuda a alguien que estaba tan desesperado como yo.
Sé que ya se han publicado muchas respuestas para esto, pero ninguna de las respuestas funcionó de forma independiente para mi sitio. Así que aquí está lo que funcionó para mí:
Paso 1: Desinstale las siguientes actualizaciones: KB2920789, KB2920790, KB2920792, KB2920793, KB2984942, KB2596927
Paso 2: Ocultar estas actualizaciones para que no se instalen en reinicios posteriores
Paso 3: Eliminar la carpeta Excel8.0 de C: / Users / <> / AppData / Local / Temp
Paso 4: reinicie la estación de trabajo (también me aseguraría de que los KB mencionados anteriormente no se aplicaran inadvertidamente)
Soy un desarrollador de Excel, y definitivamente sentí el dolor cuando esto sucedió. Afortunadamente, pude encontrar una solución cambiando el nombre de los archivos MSForms.exd en VBA incluso cuando Excel se está ejecutando, lo que también puede solucionar el problema. Los desarrolladores de Excel que necesitan distribuir sus hojas de cálculo pueden agregar el siguiente código VBA a sus hojas de cálculo para que sean inmunes a la actualización de MS.
Coloque este código en cualquier módulo.
Public Sub RenameMSFormsFiles()
Const tempFileName As String = "MSForms - Copy.exd"
Const msFormsFileName As String = "MSForms.exd"
On Error Resume Next
''Try to rename the C:/Users/[user.name]/AppData/Local/Temp/Excel8.0/MSForms.exd file
RenameFile Environ("TEMP") & "/Excel8.0/" & msFormsFileName, Environ("TEMP") & "/Excel8.0/" & tempFileName
''Try to rename the C:/Users/[user.name]/AppData/Local/Temp/VBE/MSForms.exd file
RenameFile Environ("TEMP") & "/VBE/" & msFormsFileName, Environ("TEMP") & "/VBE/" & tempFileName
End Sub
Private Sub RenameFile(fromFilePath As String, toFilePath As String)
If CheckFileExist(fromFilePath) Then
DeleteFile toFilePath
Name fromFilePath As toFilePath
End If
End Sub
Private Function CheckFileExist(path As String) As Boolean
CheckFileExist = (Dir(path) <> "")
End Function
Private Sub DeleteFile(path As String)
If CheckFileExist(path) Then
SetAttr path, vbNormal
Kill path
End If
End Sub
La subrutina RenameMSFormsFiles intenta cambiar el nombre de los archivos MSForms.exd en
C:/Users/[user.name]/AppData/Local/Temp/Excel8.0/
y
C:/Users/[user.name]/AppData/Local/Temp/VBE/
Carpetas
C:/Users/[user.name]/AppData/Local/Temp/VBE/
a MSForms - Copy.exd.
Luego, llame a la subrutina RenameMSFormsFiles al comienzo del evento Workbook_Open.
Private Sub Workbook_Open()
RenameMSFormsFiles
End Sub
La hoja de cálculo intentará cambiar el nombre de los archivos MSForms.exd cuando se abra. Obviamente, esta no es una solución perfecta:
- El usuario afectado seguirá experimentando los errores de control de ActiveX cuando ejecute el código VBA la primera vez que abra la hoja de cálculo. Solo después de ejecutar el código VBA una vez y reiniciar Excel, se soluciona el problema. Normalmente, cuando un usuario encuentra una hoja de cálculo rota, la reacción instintiva es cerrar Excel e intentar abrir la hoja de cálculo nuevamente. :)
- Los archivos MSForms.exd cambian de nombre cada vez que se abre la hoja de cálculo, incluso cuando no hay ningún problema con los archivos MSForms.exd. Pero la hoja de cálculo funcionará bien.
Al menos por ahora, los desarrolladores de Excel pueden continuar distribuyendo su trabajo con esta solución hasta que Microsoft lance una solución.
He publicado esta solución here .