Controles ActiveX deshabilitados en Excel después de aplicar actualización
En dias recientes Microsoft publicó unas actualizaciones de seguridad para Office, las cuales solucionaban algunas cuestiones de seguridad, pero una especial provocó que no pudieran usar los controles ActiveX que son usados cuando se desarrollan macros.
Figura 1. Controles ActiveX en Excel.
La actualización mencionada es la KB2553154, la cual se describe en ésta página.
Síntomas
El día de hoy algunos usuarios comenzaron a reportar esta situación con sus archivos de Excel, principalmente con los que tienen controles ActiveX.
El primer síntoma es, por ejemplo, si se tiene un control en una hoja, éste control no puede ejecutar la macro que tenga asociada.
Los comentarios también aputaban a que aparecía la leyenda “No se puede insertar el objeto” cuando querían insertar un control. Tal como se muestra en la Figura 1.
Figura 2. Mensaje al querer insertar un control ActiveX.
Solución
Tanto Microsoft como el equipo de desarrollo de Excel están comprometidos a reparar esta situación, pero mientras tanto podemos hacer lo siguiente en las PCs afectadas.
Con Excel y Word cerrados, deberemos eliminar los archivos con extensión .EXD alojados en los siguientes directorios:
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
Una vez eliminados podemos volver a abrir nuestras aplicaciones.
La solución que aportas, a mi no me ha funcionado; aunque sí me ha servido la información de la actualización que ha provocado el problema: he desinstalado esa actualización y me vuelve a funcionar perfectamente.
Desconozco si sería necesario borrar esos archivos o no, por que lo primero que he hecho ha sido borrar los archivos y después desinstalar. Espero que todo lo demás funcione.
Gracias
La dos soluciones son correctas, pero en cada PC puede una funcionar y la otra no.
Esperemos que pronto esté la solución por parte de MSFT.
Hola, yo tengo el excel 2007 aplique el borrado de archivos, la actualización con ese numero no la tengo instalada, tengo windows 8.1. Al borrar los archivos ya puedo diseñar y acceso a las propiedades, pero al guardar y abrir el archivo ya no permite accesar a los controles, no graba las propiedades de los controles ya no aparecen propiedades a los objetos insertados de tipo activex..
Hola, yo tengo el excel 2007 aplique el borrado de archivos, la actualización con ese numero no la tengo instalada, tengo windows 8.1. Al borrar los archivos ya puedo diseñar y acceso a las propiedades, pero al guardar y abrir el archivo ya no permite accesar a los controles, no graba las propiedades de los controles ya no aparecen propiedades a los objetos insertados de tipo activex..
En el artículo hago mención sobre la actualización que provoca esta situación. Sólo hay que desinstalarla.
Hola.
Aplique la solución y ya me deja poner los botones. El problema es que al poner un botón empieza con el botón 21 (ej: CommandButton21) y en la barra de formulario aparece “=INCRUSTAR(“Forms.CommandButton.1″,””)). Y al pasar este archivo a otra máquina ya no funcionan las macros ni los objetos. Sabes el porque? o cual es la solución?
Este comportamiento del botón 21 es una secuela de la misma actualización que trata este artículo.
Microsoft ya está trabajando en aplicar una solución.
En cuanto se publique la solución lo informaré en el Blog.
Hola.
Aplique la solución y ya me deja poner los botones. El problema es que al poner un botón empieza con el botón 21 (ej: CommandButton21) y en la barra de formulario aparece “=INCRUSTAR(“Forms.CommandButton.1″,””)). Y al pasar este archivo a otra máquina ya no funcionan las macros ni los objetos. Sabes el porque? o cual es la solución?
Este comportamiento del botón 21 es una secuela de la misma actualización que trata este artículo.
Microsoft ya está trabajando en aplicar una solución.
En cuanto se publique la solución lo informaré en el Blog.
Yo tuve ese problema y lo que hice fue; con Office totalmente cerrado, en el explorador de Windows seleccione Equipo y en el buscador busque TODOS archivos con extencion exd (*.exd) al darme el resultado final, los ELIMINE TODOS y se fue el problema pero.
Hace días volvio algo similar, no lo mismo, que decía:
La biblioteca de objetos no es valida o contiene referencias a definiciones de objetos que no se pueden encontrar.
[IMG]http://i61.tinypic.com/wm1q4l.jpg[/IMG]
Al leer esto pareciera que alguna librería ocx o dlll falta pero no, no se trata de eso y si de los mismos exd.
Volvi a hacer el mismo proceso eliminándolos todos y listo, pero mi pregunta es; ¿no es que Microsoft ya había resuelto este asunto?
Yo tuve ese problema y lo que hice fue; con Office totalmente cerrado, en el explorador de Windows seleccione Equipo y en el buscador busque TODOS archivos con extencion exd (*.exd) al darme el resultado final, los ELIMINE TODOS y se fue el problema pero.
Hace días volvio algo similar, no lo mismo, que decía:
La biblioteca de objetos no es valida o contiene referencias a definiciones de objetos que no se pueden encontrar.
[IMG]http://i61.tinypic.com/wm1q4l.jpg[/IMG]
Al leer esto pareciera que alguna librería ocx o dlll falta pero no, no se trata de eso y si de los mismos exd.
Volvi a hacer el mismo proceso eliminándolos todos y listo, pero mi pregunta es; ¿no es que Microsoft ya había resuelto este asunto?
Buenos días.
Tengo un problema similar al de Alberto Campillo,
Hice unas macros como sigue:
‘CTRL a
Sub CalculaPromediosActividadesDiariasParcial1()
filaFechas = 9
filaInicial1 = 13
filaFinal1 = 37
filaInicial2 = 7
filaFinal2 = 31
parcial1 = CalculaPromediosActividades(filaFechas, filaInicial1, filaFinal1, filaInicial2, filaFinal2)
End Sub
Sub CalculaPromediosActividadesDiariasParcial2()
filaFechas = 47
filaInicial1 = 51
filaFinal1 = 75
filaInicial2 = 44
filaFinal2 = 68
parcial1 = CalculaPromediosActividades(filaFechas, filaInicial1, filaFinal1, filaInicial2, filaFinal2)
End Sub
Sub CalculaPromediosActividadesDiariasParcial3()
filaFechas = 85
filaInicial1 = 89
filaFinal1 = 113
filaInicial2 = 81
filaFinal2 = 105
parcial1 = CalculaPromediosActividades(filaFechas, filaInicial1, filaFinal1, filaInicial2, filaFinal2)
End Sub
Function CalculaPromediosActividades(filaFechas, filaI1, filaF1, filaI2, filaF2)
validar = validaEsc()
If validar = False Then
GoTo fin
End If
msg = MsgBox(“inicia proceso de cálculo de promedio de actividades diarias del parcial(TARDARÁ UNOS SEGUNDOS) “, vbOKOnly)
‘ Worksheets(“EVID1”).Range(“b4”).Activate
direccionActual = ActiveCell.Address
‘MsgBox ActiveCell.Column
‘MsgBox ActiveCell.Row
If (ActiveCell.Row filaFechas) Or (ActiveCell.Value = “”) Then
e = MsgBox(“No seleccionó la celda correcta”, vbOKOnly, “Error de selección de celdaseleccione un dia del mes “)
GoTo fin
End If
COLUMNAFINAL = Mid(direccionActual, InStr(direccionActual, “$”) + 1, InStr(2, direccionActual, “$”) – 2)
COLUMNAINICIAL = “AD”
‘——————————————————–
‘PARA LA HOJA EVID1 ANVERSO
‘columna a la cual se le aplicara el promedio
filaInicial = filaI1
filaFinal = filaF1
HOJA = “EVID1”
‘ contamos la cantidad de actividades de la primera fila
cantidadActiv = cantidadDeActividadesDiarias(COLUMNAINICIAL, filaInicial, COLUMNAFINAL, HOJA)
msg = MsgBox(“Total de actividades: ” & cantidadActiv & ” Se aplicará a la columna ” & COLUMNAFINAL, vbInformation)
Rem llamamos al metodo que asigna los promedios a la columna de la fecha seleccionada
valores = AsignarPromedios(filaInicial, filaFinal, COLUMNAINICIAL, COLUMNAFINAL, cantidadActiv, HOJA)
‘———————————————————
‘PARA LA HOJA EVID1 REVERSO
filaInicial = filaI2
filaFinal = filaF2
HOJA = “EVID2”
Rem llamamos al metodo que asigna los promedios a la columna de la fecha seleccionada
valores = AsignarPromedios(filaInicial, filaFinal, COLUMNAINICIAL, COLUMNAFINAL, cantidadActiv, HOJA)
fin:
End Function
Function AsignarPromedios(filaInicial, filaFinal, COLUMNAINICIAL, COLUMNAFINAL, cantidadActiv, HOJA)
f = 0
While (f 0) Or (Worksheets(“CONCENTRADO”).Range(“C10”).Value = 0) Then
validaEsc = False
msg = MsgBox(Worksheets(“CONCENTRADO”).Range(“C10″).Value& & ” VERIFIQUE SU NOMBRE”, vbCritical)
msg = MsgBox(Worksheets(“CONCENTRADO”).Range(“C10″).Value& & ” No tiene permiso de usar la aplicación,puede comunicarse al 9221128312 o al correo iscmdz@hotmail.com“, vbCritical)
End If
End Function
‘ctrl+mayuscula+L
Sub insertarPalomita()
ActiveCell.Value = ChrW(&H221A)
End Sub
al llegar al For Each K In Worksheets(HOJA).Range(COLUMNAINICIAL & filaInicial + f & “:” & COLUMNAFINAL & filaInicial + f)
de la función AsignarPromedios() marca un error en la variable HOJA, esto ocurre cuando copio mi archivo a otra computadora. aun borrando todos lo exd:
del %temp%vbe*.exd
del %temp%excel8.0*.exd
del %appdata%microsoftforms*.exd
del %appdata%microsoftlocal*.exd
del %temp%word8.0*.exd
del %temp% PPT11.0*.exd
también cambia el valor de la propiedad name de los botones que llaman a cada una de las macros que coloco en la hoja . quiero que funcione en la versión 2007 o superior de Excel.
alguien puede aportar algo?
Muchas gracias.
Buenos días.
Tengo un problema similar al de Alberto Campillo,
Hice unas macros como sigue:
‘CTRL a
Sub CalculaPromediosActividadesDiariasParcial1()
filaFechas = 9
filaInicial1 = 13
filaFinal1 = 37
filaInicial2 = 7
filaFinal2 = 31
parcial1 = CalculaPromediosActividades(filaFechas, filaInicial1, filaFinal1, filaInicial2, filaFinal2)
End Sub
Sub CalculaPromediosActividadesDiariasParcial2()
filaFechas = 47
filaInicial1 = 51
filaFinal1 = 75
filaInicial2 = 44
filaFinal2 = 68
parcial1 = CalculaPromediosActividades(filaFechas, filaInicial1, filaFinal1, filaInicial2, filaFinal2)
End Sub
Sub CalculaPromediosActividadesDiariasParcial3()
filaFechas = 85
filaInicial1 = 89
filaFinal1 = 113
filaInicial2 = 81
filaFinal2 = 105
parcial1 = CalculaPromediosActividades(filaFechas, filaInicial1, filaFinal1, filaInicial2, filaFinal2)
End Sub
Function CalculaPromediosActividades(filaFechas, filaI1, filaF1, filaI2, filaF2)
validar = validaEsc()
If validar = False Then
GoTo fin
End If
msg = MsgBox(“inicia proceso de cálculo de promedio de actividades diarias del parcial(TARDARÁ UNOS SEGUNDOS) “, vbOKOnly)
‘ Worksheets(“EVID1”).Range(“b4”).Activate
direccionActual = ActiveCell.Address
‘MsgBox ActiveCell.Column
‘MsgBox ActiveCell.Row
If (ActiveCell.Row filaFechas) Or (ActiveCell.Value = “”) Then
e = MsgBox(“No seleccionó la celda correcta”, vbOKOnly, “Error de selección de celdaseleccione un dia del mes “)
GoTo fin
End If
COLUMNAFINAL = Mid(direccionActual, InStr(direccionActual, “$”) + 1, InStr(2, direccionActual, “$”) – 2)
COLUMNAINICIAL = “AD”
‘——————————————————–
‘PARA LA HOJA EVID1 ANVERSO
‘columna a la cual se le aplicara el promedio
filaInicial = filaI1
filaFinal = filaF1
HOJA = “EVID1”
‘ contamos la cantidad de actividades de la primera fila
cantidadActiv = cantidadDeActividadesDiarias(COLUMNAINICIAL, filaInicial, COLUMNAFINAL, HOJA)
msg = MsgBox(“Total de actividades: ” & cantidadActiv & ” Se aplicará a la columna ” & COLUMNAFINAL, vbInformation)
Rem llamamos al metodo que asigna los promedios a la columna de la fecha seleccionada
valores = AsignarPromedios(filaInicial, filaFinal, COLUMNAINICIAL, COLUMNAFINAL, cantidadActiv, HOJA)
‘———————————————————
‘PARA LA HOJA EVID1 REVERSO
filaInicial = filaI2
filaFinal = filaF2
HOJA = “EVID2”
Rem llamamos al metodo que asigna los promedios a la columna de la fecha seleccionada
valores = AsignarPromedios(filaInicial, filaFinal, COLUMNAINICIAL, COLUMNAFINAL, cantidadActiv, HOJA)
fin:
End Function
Function AsignarPromedios(filaInicial, filaFinal, COLUMNAINICIAL, COLUMNAFINAL, cantidadActiv, HOJA)
f = 0
While (f 0) Or (Worksheets(“CONCENTRADO”).Range(“C10”).Value = 0) Then
validaEsc = False
msg = MsgBox(Worksheets(“CONCENTRADO”).Range(“C10″).Value& & ” VERIFIQUE SU NOMBRE”, vbCritical)
msg = MsgBox(Worksheets(“CONCENTRADO”).Range(“C10″).Value& & ” No tiene permiso de usar la aplicación,puede comunicarse al 9221128312 o al correo iscmdz@hotmail.com“, vbCritical)
End If
End Function
‘ctrl+mayuscula+L
Sub insertarPalomita()
ActiveCell.Value = ChrW(&H221A)
End Sub
al llegar al For Each K In Worksheets(HOJA).Range(COLUMNAINICIAL & filaInicial + f & “:” & COLUMNAFINAL & filaInicial + f)
de la función AsignarPromedios() marca un error en la variable HOJA, esto ocurre cuando copio mi archivo a otra computadora. aun borrando todos lo exd:
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
también cambia el valor de la propiedad name de los botones que llaman a cada una de las macros que coloco en la hoja . quiero que funcione en la versión 2007 o superior de Excel.
alguien puede aportar algo?
Muchas gracias.