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.

image

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.

image

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.

You may also like...

13 Responses

  1. Nacho C says:

    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

  2. joel says:

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

  3. joel says:

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

  4. ALberto Campillo says:

    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.

  5. ALberto Campillo says:

    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.

  6. JoaoM says:

    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?

  7. JoaoM says:

    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?

  8. Mendez says:

    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.

  9. Mendez says:

    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.

Leave a Reply

Your email address will not be published.

%d bloggers like this: