29 septiembre, 2015
No vemos por qué uno no habría de usar el control DTPicker para crear y administrar calendarios en Microsoft Office. No solo el comando funciona muy bien, sino que además es transversal a todas las aplicaciones del paquete y hay disponible mucha documentación al respecto en la web y en los manuales de la aplicación.
En el caso de que lo reconsidere, recordaremos que en Office 2010 y superiores, DTPicker no está disponible de manera predeterminada, lo cual nos obligará a instalarlo manualmente. Para eso necesitaremos antes registrar la biblioteca de vínculos dinámicos mscomct2.ocx, disponible para su descarga en www.redusers.com/u/4rw. El archivo, descomprimido, debe ser guardado en la carpeta de sistema C:\Windows\System32(C:\Windows\SysWow64 en el caso de que usemos versiones de 64 bits). Una vez hecho eso, deberemos iniciar una sesión de terminal (con la aplicación [Símbolo del sistema]) como administrador, y dentro de la carpeta donde hayamos guardado la librería deberemos ejecutar el comando regsvr32 c:\windows\system32\mscomct2.ocx (ajustaremos la ruta de la carpeta en sistemas de 64 bits).
Hecho esto, en Excel deberemos visitar la ficha [Programador]. Si no estuviera disponible haremos clic en [Archivo/Opciones] y en el apartado [Personalizar la cinta de opciones] marcaremos la casilla de verificación [Desarrollador]. Luego de aceptar todo accederemos finalmente a la ficha y presionaremos el botón [Insertar/Más controles]. De la lista seleccionaremos [Microsoft Date and Time Picker Control 6.0 (SP6)], y dibujaremos sobre la hoja el calendario.
Una alternativa si el calendario no va a funcionar como origen dinámico de datos es usar Gcal2Excel (www.gcal2excel.com), una sencilla aplicación que convierte los datos disponibles en un calendario de Google Calendar –a través de Calendar pueden utilizarse también los calendarios de Outlook.com– en un archivo CSV, lo cual nos permite luego evaluar en términos absolutos la información que cargamos en las aplicaciones web. Como para saber cuántas horas le dedicamos a un proyecto y cómo debemos facturarlas, por caso.
Dada la flexibilidad del formato CSV, con Gcal2Excel podemos trabajar en un abanico enorme de aplicaciones, suites ofimáticas web incluidas.
En Excel 2013 la ficha [Programador] se llama [Desarrollador].
Los geeks de la vieja escuela aún amamos DTPicker.
DTPicker
El control DTPicker, control histórico si los hay, tuvo la función original de permitirnos seleccionar una fecha y una hora para el relleno de una celda. De este modo, el usuario de la planilla insertaba siempre correctamente la información y además podía interactuar con ella de un modo gráfico mucho más amigable.
Utilizar la función es bastante simple, pero no alcanza con insertar el calendario. Además hay que asociar el calendario a una celda destino y configurar el reloj para poder sumar horas además de días. En www.redusers.com/u/4rv encontraremos un completo tutorial que nos ayudará a usar DTPicker cual campeones, y que nos ahorrará cualquier inconveniente asociado a nuestra inexperiencia.
En DTPicker utilizaremos la propiedad [Format] para definir si lo que se insertará será un horario, una fecha o una hora en una fecha.
Alternativas en Excel 2013
Una alternativa que pueda resultar valiosa y que se aplica a Office 2010 SP2 y a Office 2013 es el control Calendar Control 11.0. No tiene más objeto que mostrar un calendario con el día de la fecha resaltado, a partir de lo cual puede obtenerse una fecha que puede ser insertada en una celda con un botón [Obtener fecha]. Para usar este control debemos instalarlo igual que como lo hicimos con DTPicker en el caso anterior, pero utilizando el archivo mscal.ocx que está disponible en www.redusers.com/u/4rx. En el caso del registro del control, en la ventana [Más controles] deberemos presionar el botón [Registrar personalizado…] y seleccionar el archivo mscal.ocx para poder elegir de la lista el control [Calendar Control 11.0].
Si usamos Windows Vista o 7 deberemos desactivar el control de cuentas de usuario con el nivel [No notificarme nunca] para usar sin molestias constantes el control MSCal.
La instalación del botón que insertará la fecha en una celda es un poco más complicada. Empezaremos por insertar un botón ActiveX clásico con [Desarrollador/Insertar/Botón (Control de formulario)]. Luego haremos doble clic sobre el botón para modificar el código y utilizaremos en lugar del predeterminado el siguiente:
Private Sub CommandButton1_Click()
Range("E10").Value = Calendar1.Value
End Sub
En nuestro ejemplo, en la celda E10 se insertará el valor de la fecha que sea que hayamos seleccionado en el calendario.
La apariencia de MSCal no es la de un calendario de Outlook.com, pero de todos modos resulta más que suficiente.