¿Controles ActiveX de Microsoft Excel deshabilitados?

113

Tengo algunas hojas de cálculo de Excel que usan casillas de verificación ActiveX para controlar cierta actividad. Funcionaron recientemente pero hoy empezaron a dar errores. Un colega me alertó de esto, pero todavía estaba funcionando 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, ahora ya no funciona en mi computadora. Ya no puedo marcar las casillas de verificación de ActiveX y, como parte del intento de depuración, parece que ya 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

Mike Pedersen
fuente
¿Qué control fue específicamente? ¿O te refieres a TODO activeX?
peege
3 colegas míos también parecen tener este problema. Sus hojas de cálculo usan, creo, controles ActiveX: ComboBoxes y Buttons. Uno de ellos tenía su PC en funcionamiento y, por lo tanto, no recibió las actualizaciones. Cuando lo recuperó, ejecutó con éxito los controles. Es decir, hasta que su PC se actualice automáticamente. Ahora no es así. Tampoco podemos agregar controles ActiveX a sus hojas.
Mitchell Kaplan
5
Yo también estoy experimentando este problema, al igual que todos los usuarios de mi empresa. ¿Cómo podría MS lanzar una actualización que rompa los controles ActiveX en Excel? Esto es Loco.
harryg
3
@ vba4all: no, esta es una pregunta de programación y pertenece aquí.
Harry Johnston
2
@ vba4all: Los controles ActiveX son una herramienta de programación, ¿no es así? ¿Para qué más los usarías? Sería diferente si el OP, por ejemplo, preguntara sobre un producto de terceros en particular (que usa VBA) que dejó de funcionar. ¿Pero en este caso parece ser su propio código el que se vio afectado?
Harry Johnston

Respuestas:

159

De 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.

John W.
fuente
1
Tenía una PC sin actualizar. Abrí Excel y pude agregar un botón ActiveX. Busqué C: \ Users [user.name] \ AppData \ Local \ Temp \ Excel8.0 \ MSForms.exd, pero no había ninguna carpeta Excel8.0. Luego ejecuté la actualización de Windows. Intenté de nuevo agregar un botón ActiveX a mi hoja de cálculo y no pude. También noté que ahora tenía Excel8.0 \ MSForms.exd. Lo eliminé y sin reiniciar volví a abrir Excel y ahora pude agregar el botón ActiveX. ¡Gracias!
Mitchell Kaplan
2
¡¡Gracias!! Este proceso solucionó el problema en mi computadora. Siento por los desarrolladores que tienen grandes lanzamientos públicos que esto se rompe ... Espero que MS emita una solución.
Mike Pedersen
1
Esto no funcionó para mí. Estoy haciendo una restauración del sistema al 7/12/14 en una de nuestras computadoras para ver si eso lo arregla. También intenté quitar un botón y reemplazarlo según una respuesta a continuación, pero recibí un mensaje emergente "No se puede insertar un objeto" o algo así.
montaña el
1
Para los usuarios de Windows XP, la subcarpeta Temp se puede encontrar aquí: C: \ Documents and Settings \ [nombre de usuario] \ Configuración local \ Temp \ Excel8.0 \ MSForms.exd
bjtilley
2
Después de eliminar los archivos anteriores, no funcionó para mí, pero luego encontré estos archivos en la carpeta C: / Windows / Temp y los eliminé. Entonces pude hacer que este problema funcionara.
QV1
35

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. Se experimentan problemas en ocasiones, como cuando abren archivos con proyectos VBA existentes utilizando controles de formularios, intentan insertar un control de formularios en una nueva hoja de trabajo o ejecutan software de terceros que puede usar estos componentes.

Es posible que reciba errores como:

"No se puede insertar el objeto" "La biblioteca de objetos no es válida o contiene referencias a definiciones de objeto 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 hacer referencia a un control ActiveX como miembro de una hoja de trabajo mediante código. Pasos a seguir tras 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:

Dado 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 necesita debe contener las siguientes líneas y debe 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):

  1. 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 edite algún tipo a cualquier módulo de código> Depurar> Compilar VBAProject.

    Guarde y vuelva a abrir el archivo. Pruebe la 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 otros 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 el problema, es posible que se trate de un problema diferente y es posible que sea necesario solucionarlo.

Microsoft está trabajando actualmente en este problema. Mire el blog para obtener actualizaciones.

Fuente

Jan Moritz
fuente
3
verifique la fuente vinculada, ahora ha actualizado la solución de secuencias de comandos
peterson
En mi máquina,% appdata% se define como "C: \ Users \ <usuario actual> \ AppData \ Roaming \", por lo que no hay un directorio "% appdata% \ microsoft \ local \". Además, "% appdata% \ Roaming \ microsoft \ forms \" parece ser redundante, como "C: \ Users \ <current user> \ AppData \ Roaming \ Roaming \ microsoft \ forms \" y, nuevamente, no existe tal directorio. en mi máquina.
pstraton
15

Fue KB2553154 . Microsoft necesita lanzar una solución. Como desarrolladores de aplicaciones de Excel, no podemos ir a todas las computadoras de nuestros clientes y eliminar archivos de ellas. Se nos culpa por algo que Microsoft causó.

Ron R
fuente
1
También KB2596927 y KB2726958, según la versión de Office que esté ejecutando.
Harry Johnston
13

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 necesiten 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 las carpetas C:\Users\[user.name]\AppData\Local\Temp\Excel8.0\y 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:

  1. El usuario afectado seguirá experimentando errores de control 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, el problema se soluciona. 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. :)
  2. Los archivos MSForms.exd se renombran 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 alternativa hasta que Microsoft publique una solución.

He publicado esta solución aquí .

Yi Hu
fuente
Gracias Yi. Me funcionó, pero tuve que reiniciar mi Excel 2010 (¿podría estar vinculado con el hecho de que estaba ejecutando el editor de VBA al mismo tiempo?)
J. Chomel
5

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 /Sencontró el único archivo en mi sistema.

Marc Thibault
fuente
3

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, primero elimino los archivos .EXD, porque de lo contrario, aparece un error al abrir.

En mi caso, no puedo actualizar / actualizar a todos los usuarios de mi archivo de Excel en varias ubicaciones. Dado que el problema vuelve después de que algunos usuarios guardan el archivo de Excel, tendré que reemplazar el control ActiveX con otra cosa.

pghcpa
fuente
2
Ninguna de las sugerencias funcionó para mí, excepto guardar el archivo como XLSX (eliminar todo el código) y luego volver a pegarlo como lo hizo, volviendo a guardar como XLSM. Dolor enorme, MASIVO en el culo Microsoft. La reinstalación de Office tampoco lo solucionó para mí, así que nadie pierde el tiempo intentándolo
DontFretBrett
2

Instrucciones simplificadas para usuarios finales. Siéntase libre de copiar / pegar lo siguiente.

A continuación, le indicamos cómo solucionar el problema cuando surja:

  1. Cierre todos sus programas y archivos de Office.
  2. 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.
  3. Busque y elimine las siguientes carpetas: Excel8.0, VBE, Word8.0
  4. 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 Windows Update se instale en su sistema) no ayudará.

sidra de pera
fuente
2

La mejor fuente de información y actualizaciones sobre este problema que pude encontrar es en los blogs de TechNet »El blog del equipo de soporte de Microsoft Excel (como se mencionó):

Los controles de formulario dejan de funcionar después de las actualizaciones de diciembre de 2014 (actualizado el 10 de marzo de 2015)

En marzo de 2015, se lanzó una revisión además de las instrucciones manuales y de reparación automática, 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:

Se han publicado revisiones para este problema 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 las actualizaciones de seguridad de Microsoft Office MS14-082 para diciembre de 2014. Se experimentan problemas en ocasiones, como cuando abren archivos con proyectos de VBA existentes utilizando controles de formularios, intente para insertar un control de formularios en una nueva hoja de trabajo o ejecutar software de terceros que pueda utilizar 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 de 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 hacer referencia a un control ActiveX como miembro de una hoja de trabajo mediante código.

Soluciones manuales y adicionales:

Solución de secuencias de comandos:

Dado 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 necesita debe contener las siguientes líneas y debe 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):

  1. En una máquina completamente actualizada y después de eliminar los archivos .exd, abra el archivo en Excel con permisos de edición.

  2. Abra Visual Basic para Aplicaciones> modifique el proyecto agregando un comentario o edite algún tipo a cualquier módulo de código> Depurar> Compilar VBAProject.

  3. Guarde y vuelva a abrir el archivo. Pruebe la 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 otros usuarios, estos usuarios también necesitarán que se apliquen las actualizaciones en sus sistemas y también se eliminen los archivos .exd.

dePatinkin
fuente
1

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 respuestas anteriores, pero al menos reconoce que Microsoft está al tanto del problema.

Mike Pedersen
fuente
0

Sé que ya se han publicado muchas respuestas para esto, pero ninguna de las respuestas funcionó de forma independiente para mi sitio. Así que esto es lo que funcionó para mí:

Paso 1: desinstale las siguientes actualizaciones: KB2920789, KB2920790, KB2920792, KB2920793, KB2984942, KB2596927

Paso 2: Oculte estas actualizaciones para que no se instalen en reinicios posteriores

Paso 3: Elimine 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 apliquen inadvertidamente)

chaltahai
fuente
0

Quiero dar una respuesta que funcionó como lo único para mí (me doy cuenta de que podría ser el único en algún momento). 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 y probé todo aquí. El botón simplemente dejó de funcionar y no pude hacerlo funcionar. Cuando noté el error y lo corrigí a:

Set colStore = new Collection

Empezó a funcionar de nuevo. Absolutamente extraño si me preguntas, pero tal vez ayude a alguien que estaba tan desesperado como yo.

Espurio
fuente