Detectar Activex Deshabilitados

Cuando necesitamos realizar tareas complejas, manejar muchos datos o crear una interfaz mas amigable y potente es necesario recurrir a controles Activex que son mas poderosos que los controles de formulario.
Los controles Activex nos permiten manejar muchos datos ya que no tienen tantas limitaciones como las controles de formulario de Excel, sin embargo también tienen desventajas y es que no todas las versiones de Excel soportan los mismos controles, asi que si trabajamos en Excel 2010 es probable que no funcione en Excel 2007 o en Excel 2013, por lo cual debemos estar seguros de que el control Activex que vamos a utilizar sea compatible con la mayor cantidad de versiones.
Un ejemplo de un control Activex que no es compatible con todas las versiones de Excel es el control de calendario ya que Excel 2007 tiene un control diferente al de Excel 2010 y Excel 2013.
Cuando ya tenemos creado nuestra interfaz ya sea en forms o en las mismas hojas muchas veces nos vamos a encontrar con que no funciona en otros equipos y esto es porque los Activex están deshabilitados y esto genera resultados inesperados por lo cual resulta muy necesario poder saber si los controles Activex están activados o no pero tenemos dos problemas, uno es que Excel no cuenta con ninguna instrucción que nos diga si los controles están activados y el otro es que tampoco hay una instrucción para activarlos, entonces tenemos que recurrir al usuario para que el mismo sea quien active los controles Activex pero aun queda el problema de que no podemos saber cuándo los controles Activex están deshabilitados.
Cuando me encontré por primera vez con este problema me di cuenta que cuando agregamos un control Activex a una hoja de Excel y los controles están deshabilitados no se puede obtener ninguna información del control como por ejemplo su caption y entonces supe que para poder detectar si están activados los controles Activex basta con agregar un control Activex en una hoja oculta y agregar un código al abrir el libro que obtenga el caption del control y si ocurre un error entonces es porque los controles Activex están desactivados, entonces podemos mostrarle una hoja al usuario con instrucciones para habilitar los controles Activex.
El código a utilizar es el siguiente

Function ActivexHabilitados()
    On Error Resume Next
    Dim caption As String
    caption = Sheets("HojaOculta").lblActivex.caption'Se intenta obtener el caption del control lblActivex insertado en la hoja
    If Err.Description <> Empty Then
        ActivexHabilitados = False
    Else
        ActivexHabilitados = True
    End If
End Function


Y el código para llamar a la función anterior

Private Sub Workbook_Open()
    If ActivexHabilitados = False Then
        Sheets("ActivarActivex").Activate
    Else
        Sheets("Inicio").Activate
    End If
End Sub


Si quieren verlo en video aquí se los dejo .

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s