Traducir el blog
Reloj analógico en tiempo real
🔝To translate this blog post to your language, select it in the top left Google box.
En el artículo anterior publiqué un reloj analógico que mostraba manualmente la hora actual, presionando la tecla para calcular el libro, ya que no era automático por no tener macros:
Tenía la ventaja de poder usarlo en Excel para la Web y de insertarlo en el blog, por si alguien quería probarlo sin tener instalado Excel.
Ahora publico un reloj analógico en tiempo real, pues es automático y mueve la aguja de los segundos cada segundo, gracias a las macros VBA.
NOTA: Haga clic en el reloj analógico para iniciar o detener el temporizador de un segundo.
Descarga el reloj analógico en tiempo real desde este enlace:
Las macros del archivo descargado están bloqueadas por defecto. Para desbloquear las macros debes modificar las Propiedades del archivo siguiendo estas instrucciones:
Abre el archivo y presiona el botón: Habilitar edición cuando aparezca el aviso de VISTA PROTEGIDA.
Presiona el botón: Habilitar contenido cuando aparezca la ADVERTENCIA DE SEGURIDAD Las macros se han deshabilitado o se deshabilitó parte del contenido activo.
Las macros no están protegidas para poder analizar fácilmente el código VBA. Las hojas están protegidas sin contraseña, para poder analizarlas y para evitar que los usuarios alteren las fórmulas.
ATENCIÓN: Se puede modificar este libro de Excel respetando esta licencia:
Creative Commons — Atribución-NoComercial-CompartirIgual-No portada — CC BY-NC-SA 4.0
Estas son las principales características del reloj analógico en tiempo real.
⭐ Módulo del temporizador API
Este módulo implementa un temporizador de alta precisión en
Excel usando las funciones de Windows SetTimer y
KillTimer.
Está diseñado para funcionar en 32 y 64 bits, sincronizarse exactamente con el reloj del sistema y actualizar el rango nombrado "miHora" cada segundo sin bloquear Excel.
🧩 1. Compatibilidad total 32/64 bits
Incluye declaraciones API con #If VBA7 Then para:
SetTimerKillTimer
Esto garantiza compatibilidad con:
- Excel 2010 (32/64 bits)
- Excel 2013 → Excel para Microsoft 365
- Windows 7 → Windows 11
⏱️ 2. Temporizador real basado en Windows (no OnTime)
A diferencia de Application.OnTime, este temporizador:
- No se retrasa cuando Excel está ocupado
- No se acumula
- No depende del motor de Excel
- No se rompe al cerrar libros
- Tiene precisión de milisegundos
Usa:
TimerID = SetTimer(0, 0, intervalo_ms, AddressOf Tick)
🎯 3. Sincronización exacta con el segundo del sistema
El módulo calcula cuántos milisegundos faltan para el próximo segundo exacto:
msRestantes = 1000 - (Timer * 1000 Mod 1000)
Esto permite:
- Primer tick perfectamente alineado con el reloj
- Ticks posteriores cada 1000 ms exactos
- Evitar desvíos acumulados
🔄 4. Tick inteligente: solo actualiza si el segundo cambia
Evita trabajo innecesario:
If segundoActual <> UltimoSegundo Then
Range("miHora").Value2 = Now()
End If
Beneficios:
- Menos carga
- Más estabilidad
- No repite operaciones dentro del mismo segundo
🧱 5. Protección contra errores (incluido el 50290)
El procedimiento Tick incluye:
On Error GoTo SalirTick
Esto evita que:
- Excel detenga el temporizador si está ocupado
- Se produzcan errores al cerrar libros
- El temporizador quede “colgado”
🖱️ 6. Cursor dinámico de reloj
Al iniciar:
Application.Cursor = xlWait
Al detener:
Application.Cursor = xlDefault
Esto da feedback visual claro al usuario.
🛑 7. Inicio/parada conmutado
El módulo incluye un interruptor:
Sub StartStopTimerAPI()
que alterna entre:
StartTimerAPIStopTimerAPI
Ideal para botones o accesos rápidos.
🧹 8. Limpieza segura del temporizador
Al detener:
KillTimer 0, TimerID
Esto garantiza:
- No quedan temporizadores huérfanos
- No se ejecutan ticks después de cerrar el libro
- No se producen cierres inesperados de Excel
📌 9. No bloquea Excel
El temporizador API:
- No usa bucles
- No usa
DoEvents - No congela la interfaz
- Permite trabajar en otros libros sin interferencias
🎁 Resumen del Temporizador API
Temporizador API de alta precisión para Excel, compatible con 32/64 bits, sincronizado al segundo del sistema, con actualización inteligente, cursor dinámico, protección contra errores y control seguro de inicio/parada. No bloquea Excel y mantiene estabilidad incluso con múltiples libros abiertos.
🧩 DIAGRAMA DE FLUJO—Temporizador API de un segundo
┌──────────────────────────┐
│ StartStopTimerAPI() │
└──────────────┬───────────┘
│
¿RunClk = False? ────┤
│Sí
▼
┌────────────────────┐
│ StartTimerAPI() │
└───────┬────────────┘
│
▼
┌──────────────────────────────┐
│ Cursor = xlWait │
│ RunClk = True │
│ SyncPhase = True │
│ UltimoSegundo = -1 │
└───────────┬──────────────────┘
│
▼
┌────────────────────────────────────────┐
│ Calcular msRestantes hasta el próximo │
│ segundo exacto │
└───────────────┬────────────────────────┘
│
▼
┌────────────────────────────────────────┐
│ SetTimer( intervalo = msRestantes ) │
│ → llama a Tick() │
└────────────────────────────────────────┘
──────────────────────────────────────────────────────────────────────────────
TICK() — Cada disparo del temporizador
──────────────────────────────────────────────────────────────────────────────
┌────────────────────────────────────────┐
│ Tick() │
└───────────┬────────────────────────────┘
│
▼
┌────────────────────────────────────────┐
│ ¿SyncPhase = True? │
└───────────┬────────────────────────────┘
│Sí
▼
┌────────────────────────────────────────┐
│ SyncPhase = False │
│ KillTimer (primer timer) │
│ SetTimer( intervalo = 1000 ms ) │
│ (sincronizado al segundo exacto) │
└───────────┬────────────────────────────┘
│
▼
┌────────────────────────────────────────┐
│ segundoActual = Second(Now) │
└───────────┬────────────────────────────┘
│
¿segundoActual = UltimoSegundo? ─────────┤
│No
▼
┌────────────────────────────────────────┐
│ UltimoSegundo = segundoActual │
│ Range("miHora") = Now() │
└────────────────────────────────────────┘
│
▼
┌────────────────────────────────────────┐
│ Fin Tick() │
└────────────────────────────────────────┘
──────────────────────────────────────────────────────────────────────────────
STOP — Detener temporizador
──────────────────────────────────────────────────────────────────────────────
┌──────────────────────────┐
│ StopTimerAPI() │
└──────────────┬───────────┘
│
▼
┌──────────────────────────┐
│ RunClk = False │
│ KillTimer TimerID │
│ Cursor = xlDefault │
└──────────────────────────┘
🎯 Qué representa este diagrama
- El flujo completo desde que el usuario inicia o detiene el temporizador.
- La sincronización exacta al segundo del sistema.
- El comportamiento del primer tick (sincronización) y los siguientes (intervalo fijo).
- La actualización inteligente de
miHora. - La gestión del cursor de reloj.
- La detención limpia del temporizador API.
⭐ Eventos en ThisWorkbook
Este módulo conecta el ciclo de vida del libro con el temporizador API, de modo que el temporizador:
- se inicia automáticamente cuando se abre el libro
- se detiene automáticamente cuando el libro intenta cerrarse
Así se evita que el temporizador quede activo en memoria o siga ejecutándose después de cerrar el archivo.
🧩 Comportamiento detallado
✔ Al abrir el libro
Private Sub Workbook_Open()
StartTimerAPI
End Sub
Cuando el archivo se abre:
- Se ejecuta
StartTimerAPI - Se activa el temporizador API
- Se inicia la sincronización al segundo exacto
- Se cambia el cursor a modo reloj (
xlWait) - Comienza la actualización periódica (Tick)
Resultado: el temporizador arranca automáticamente sin intervención del usuario.
✔ Al intentar cerrar el libro
Private Sub Workbook_BeforeClose(Cancel As Boolean)
StopTimerAPI
End Sub
Cuando el usuario pulsa:
- La X
- Alt+F4
- Ctrl+W
- O cierra desde menú
Excel ejecuta Workbook_BeforeClose, que:
- Llama a
StopTimerAPI - Mata el temporizador con
KillTimer - Restaura el cursor (
xlDefault) - Limpia el estado interno
Resultado: el temporizador se detiene siempre antes de que el libro se cierre, evitando temporizadores huérfanos o errores 50290.
🎯 En una frase
Este código garantiza que el temporizador API se inicia automáticamente al abrir el libro y se detiene de forma segura al cerrarlo, evitando que quede activo en segundo plano.
⭐ Diagrama de flujo — Eventos del libro + temporizador API
┌────────────────────────────┐
│ El usuario abre el libro │
└───────────────┬────────────┘
│
▼
┌──────────────────────────┐
│ Workbook_Open() │
└─────────────┬────────────┘
│
▼
┌──────────────────────────┐
│ StartTimerAPI │
│ • Inicia temporizador │
│ • Activa cursor reloj │
│ • Sincroniza primer tick │
└─────────────┬────────────┘
│
▼
┌──────────────────────────┐
│ Temporizador en marcha │
│ (Tick cada segundo) │
└─────────────┬────────────┘
│
▼
┌────────────────────────────┐
│ El usuario intenta cerrar │
│ (X, Alt+F4, Ctrl+W, menú) │
└───────────────┬────────────┘
│
▼
┌──────────────────────────┐
│ Workbook_BeforeClose() │
└─────────────┬────────────┘
│
▼
┌──────────────────────────┐
│ StopTimerAPI │
│ • Mata el timer API │
│ • Restaura cursor normal │
│ • Limpia estado interno │
└─────────────┬────────────┘
│
▼
┌──────────────────────────┐
│ El libro se cierra sin │
│ temporizadores activos │
└──────────────────────────┘
🎯 Qué expresa este diagrama
- El temporizador se inicia automáticamente al abrir el libro.
- El temporizador se detiene siempre antes de que el libro se cierre.
- Se evita que queden temporizadores huérfanos en memoria.
-
Se garantiza que Excel no siga ejecutando
Tickdespués del cierre. - El flujo es limpio, seguro y totalmente automático.
Contenido generado con la ayuda de:
Estos son los nombres definidos en el Administrador de nombres, necesarios para diseñar el Reloj analógico en tiempo real.
Descarga el Reloj analógico en tiempo real, pruébalo y te agradeceré cualquier sugerencia que me hagas tendente a mejorarlo.
Mi lista de blogs
-
Reloj analógico en tiempo real - 🔝*To translate this blog post to your language, select it in the top left Google box. * Un reloj analógico en tiempo real En el artículo anterior p...Hace 3 horas
-
INTEGRACIÓN AVANZADA DE TEXT-TO-SPEECH EN POWER PLATFORM CON AZURE AI FOUNDRY - Hola a todos, Hoy os voy a hablar de una arquitectura de Text-to-Speech construida sobre Azure AI Foundry e integrada con Power Platform. El objetivo … ...Hace 1 día
-
Cómo hace un Reporte de Inventario en Excel un Usuario vs un Analista - La mayoría de las personas usa Excel todos los días, pero pocas se preguntan si lo están usando a su […] The post Cómo hace un Reporte de Inventario en E...Hace 2 días
-
Sucesiones completas - En esta entrada abordaré un tema interesante, y es el de la posibilidad de que los elementos de una sucesión de números naturales, finita o infinita, ge...Hace 6 días
-
Creación de Prompts en IA - Objetivo de estas practicas que te propongo y que te ayudarán a: Actividad 1: Creación de Prompts en IA Elaboración de un prompt para generar un email pr...Hace 2 semanas
-
py_xlCBA – Supports with defined deflections - As stated in the previous post, this post will cover the calculation of beam actions and displacements when one or more supports have a defined vertical di...Hace 3 semanas
-
📒 Cómo separar textos dentro de una misma columna y agrupar fechas y horas con Power Query en Excel 💪🏽 - 📒 Cómo separar textos dentro de una misma columna y agrupar fechas y horas con Power Query en Excel 💪🏽 En muchos escenarios de análisis de datos, especi...Hace 5 semanas
-
9 Interesting Examples With PY Function in Microsoft Excel - These are the most interesting PY function tasks in Microsoft Excel that’ll surely make you a fan! The PY function in Microsoft Excel opens up an exciting ...Hace 1 mes
-
Build a Daily Events Calendar in Excel - Use my Excel events calendar to track meetings and events inside a workbook. Add your upcoming events to a list, set a start date, and then see those items...Hace 2 meses
-
FREE Calendar & Planner Excel Template for 2026 - Here is a fabulous New Year gift to you. A free 2025 Calendar Excel Template with built-in Activity planner. This is a fully dynamic and 100% customizabl...Hace 2 meses
-
Excel para Diseño de Mezclas de Concreto: Métodos Walker, Fuller, ACI y Módulo de Finura - El diseño de mezclas de concreto es un proceso fundamental en proyectos de construcción civil para garantizar que el hormigón cumpla con la resistencia, tr...Hace 2 meses
-
Mostrar datos de dos celdas en un cuadro de texto de Microsoft Excel - En Microsoft Excel es posible vincular el contenido de una celda a un cuadro de texto o a una forma. Vincular contenido de cuadro de texto a valor de cel...Hace 3 meses
-
Cómo hacer gráficos en Excel - Excel es una de las herramientas más potentes y versátiles para el análisis y la presentación de datos. Los gráficos en Excel no solo ayudan a visualizar...Hace 11 meses
-
Fin - Llevo tiempo pensando esta entrada y no sé que decir. Analisis y Decisión nació en 2008 y no ... Leer más »Hace 1 año
-
Análisis DAFO (FODA, DOFA) las decisiones con Excel - Para conocer la situación de una empresa, proyecto o persona, recurrimos al análisis DAFO (FODA, DOFA) en la toma de decisiones con Excel. El los años sese...Hace 1 año
-
Color, Conditions, and Copilot: How to save time using conditional formatting with Copilot in Excel - Hi everyone, this is part 11 in a series of posts to show you some of the things that are possible to do with Copilot in Excel. *What is conditional f...Hace 1 año
-
Megaguía: Excel para principiantes - Si estás comenzando a trabajar con Excel, esta megaguía se va a convertir en tu salvación. Nada de tutoriales avanzados ni de funciones complejas, esta… ...Hace 1 año
-
How To Predict Bearing Life With Excel - When you work in mechanical engineering, understanding the reliability and performance of bearings under various conditions is crucial. Bearings are the co...Hace 1 año
-
TikTok’s search evolution - 2 in 5 Americans use TikTok as a search engine. Nearly 1 in 10 Gen Zers are more likely to rely on TikTok than Google as a search engine. More than half of...Hace 1 año
-
Unblocking and Enabling Macros - When Windows detects that a file has come from a computer other than the one you're using, it marks the file as coming from the web, and blocks the file....Hace 2 años
-
Office Scripts: Trabajando con Tablas - [image: Office Scripts: Trabajando con Tablas] Me he dado cuenta que últimamente solo escribo de lenguaje M (es mi pequeño vicio)... pero hay que liberar l...Hace 3 años
-
Hello world! - [image: Hello world!] Welcome to WordPress. This is your first post. Edit or delete it, then start writing!Hace 3 años
-
La importancia de saber mecanografía en 2022 - [image: Resultado de imagen de mecanografía viñeta escribiendo a máquina] Según la RAE, la mecanografía es el arte de escribir a máquina. Hace unos cuantos...Hace 3 años
-
London Excel Meetup Workbooks - The workbooks used in my presentation on “Analytical and Interactive Dashboards in Excel” at the London Excel Meetup, September 3, 2020Hace 5 años
-
Cálculo de jornada que termina al día siguiente (Power Query) y despedida - [image: Cálculo de jornada que termina al día siguiente (Power Query) y despedida] Este blog se ha ocupado de cálculos de tiempo con bastante intensidad, c...Hace 5 años
-
International Keyboard Shortcut Day 2019 - The first Wednesday of every November is International Keyboard Shortcut Day. This Wednesday, people from all over the world will become far less efficient...Hace 6 años
-
Welcome, Prashanth! - Last March, I shared that we were starting to look for a new CEO for Stack Overflow. We were looking for that rare combination of someone who… Read more "W...Hace 6 años
-
Visualize parts and whole - combine clustered column and stacked column charts - *Inga: Disa what?* *Igor: -ppeared.* by The FrankensTeam ------------------------------ Really it was 3 years ago we posted our last article? *Freddy: Th...Hace 6 años
-
Salvador Sostres, analfabeto profesional - Los nuevos tiempos traen nuevas profesiones. Internet, además, ha revolucionado el mundo del periodismo y la palabra escrita. Adaptarse o morir, ese es el ...Hace 7 años
-
Planificación de compras - Realizar una lista con los productos que necesitamos y que formarán parte de nuestra cesta de la compra nos ayuda a *encontrar la combinación de bienes p...Hace 13 años
-
-
-
-
-
-
-
-
-



No Response to "Reloj analógico en tiempo real"
Leave A Reply
Comenta este artículo, critícalo o avisa si detectas algún error que haya que corregir.