Saltar al contenido

Mapa Mundial con relojes marcando las horas en Excel


pegones1

Recommended Posts

Subo adjunto con el que he pasado las horas porque quiero saber, de un vistazo, a qué horas se levantan y se acuestan mis amigos, en particular los amigos del foro.

Lo que me ha costado unas horas más es conseguir meter un fichero de 6 megas en un zip de menos de 97.7 KB. Al final ocupa 78.4 KB a base de crear dinámicamente los relojes, las ciudades y conectarse a Internet para descargar el mapa mundial.

Tengo que dar las gracias por la inspiración a George Lungu y su tutorial de cómo hacer un reloj analógico en Excel:

En alguna hora de estas vacaciones explicaré en mi blog cómo lo hice.

Felices Fiestas a tod@s.

EDITADO: Adjunto 2ª versión del Mapa con relojes mejorados y con geolocalización de las ciudades del mundo.

2ª EDICIÓN: La última versión de Relojes Mundiales 2.0 se puede descargar desde el post #20

He escrito varios temas explicando cómo hacerlos en mi blog:

RelojesMundialesPW1.zip

RelojesMundialesPW2.rar

Enlace a comentario
Compartir con otras webs

Quisiera mejorar el World Clock por lo que necesito recibir comentarios con los test y chequeos de neverdelimon1, verzulsan, Gerson y los que os bajéis el fichero del https://www.ayudaexcel.com/foro/f64/mapa-mundial-con-relojes-marcando-las-horas-en-excel-15530/#post78598.

Las características principales de este mapa de relojes mundiales son:

  • Mapa mundial con 32 relojes analógicos e infinitos relojes digitales
  • Relojes en sus zonas horarias y con ajuste del horario de verano
  • Actualización de los relojes al Tiempo Universal real UTC y GTM/Zulu
  • 24 relojes analógicos en las 24 zonas horarias
  • 10 relojes analógicos programables con listas de amigos
  • Relojes digitales de 24 horas en cualquier localización en el mapa
  • 34 ciudades asociadas a los 34 relojes analógicos
  • Lista de más de 650 ciudades de 230 países
  • Enlaces a información completa de cada ciudad
  • Creación de más ciudades sobre el mapa
  • Noche de estrellas fugaces

La sincronización de los relojes se hace con los servidores de The World Clock – Time Zones

El código es libre y, si quieres hacer modificaciones menores y subirlo al foro, debes seguir estos pasos:

  1. Ejecuta la macro privada VaciaMapa de ThisWorkbook, dejando 5 formas en la hoja "Mundo": 1 mapa, 2 relojes analógicos, 1 reloj digital y 1 ciudad.
  2. En la hoja "Ciudades" selecciona el rango "A:C" y borra todo (no elimines las columnas) contestando No a la pregunta.
  3. Guarda como otro fichero de unos 300 KB
  4. Comprímelo como zip o rar para conseguir menos de 97.7 KB
  5. Súbelo al foro para compartirlo con todos.

Enlace a comentario
Compartir con otras webs

Hola Pedro, ayer no te contesté por que lo miré por encima. Creo que has realizado un trabajo excelente. Lo volveré a mirar cuando termine una implementacion en un proyecto que ando metido, por eso no lo pude mirar en profundidad por que el codigo que has usado es muy extenso.

Cuando lo vuelva a mirar en mayor profundidad te comentare lo que vaya notando, Te comento por encima lo que noté ayer:

En excel 2000 y 2003 casca, solo va en versiones iguales o superiores a 2007, (Quizas deberias ponerle un detector de version para que solo intentara arrancar en caso de versiones aceptadas, creo que tengo el codigo por algun lado).

Desde mi punto de vista, creo que esta sobresaturado de eventos, mi ordenador es relativamente nuevo y en el tiran bien la mayoria de los juegos modernos, aun asi, tu hoja tiene demasiado parpadeo, lag entre procesos, como si le costara tirar del carro. Si es solo de pruebas esta bien que sea asi, pero quizas no le vendrian mal un par de restricciones segun un panel de control que solo activara lo que necesitas asi liberas la hoja de procesos innecesarios.

Ya te digo que todo lo de arriba esta basado en unos minutos que estuve mirandolo y no pude comprender bien la utilidad, por lo que prefiero esperar a mirarlo detenidamente para darte una respuesta mas constructiva por que tiene realmente muy buena pinta.

Un saludo amigo

Enlace a comentario
Compartir con otras webs

Gracias verzulsan por tu feedback. :)

El comprobador de compatibilidad de Excel 2010 me dice que lo es con Excel 2003 con pérdidas menores de fidelidad.

¿Qué diablos entenderá por fidelidad Micro$oft Excel?

¡No lo mismo que entendemos nosotros! :mad:

No te extrañen los lags iniciales mientras se construyen las formas de los relojes y las ciudades. De todas maneras es una primera versión Beta para ser testeada en diferentes rincones del Planeta Tierra ¡que no es tu caso! :mad:

Realmente le he prestado más atención a conseguir reducirlo en tamaño, para subirlo al foro, que en la gestión de los eventos. Lo que no quiero es reducir el número minimo de relojes y ciudades mostradas (34).

Como buen probador que eres, cuando tus propios proyectos te permitan horas libres, ¿por qué no me indicas dónde casca para seguirle la pista? :P

Enlace a comentario
Compartir con otras webs

Pedro

Que gran trabajo! mi estimado, por lo que debo felicitarte

Lo he probado en 2007 y no existe ningun parpadeo, con respecto a 2003, resultan algunos errores como: "Expresion demasiado compleja" y "No se puede asignar la propiedad XValues de la clase de series", este ultimo cuando se ubica el cursor encima del mapa

Saludos a todos

Enlace a comentario
Compartir con otras webs

Hola master Pegones

Primero que todo felicitarte doblemente, una felicitacion es por el magnifico trabajo que haz hecho y la otra pues una cordial felicitación de año nuevo.

Como casi no habia entrado al foro por eso apenas he podido postear mi test.

Lo he probado en excel 2010 y funciona correctamente por un rato, después de unos 10 min. a veces + a veces -, aparece un error que dice expresión demasiado compleja, error 16 en tiempo de ejecución.

Application.ScreenUpdating = False

With RelojDigital

.Top = Y + Mapa.Top

voy al depurador oprimo F8 y eureka avanza a la siguente linea, quizás se debe efectivamente a los procesos que tiene y que se le hace un poco 'pesado a excel' si bien desde vba poco o nada podemos hacer de forma nativa, quizás haciendo uso de funciones api podemos implementar lo que comenta nuestro amigo verzulsan a quien aprovecho para saludar.

Otra cosa que ocurre es que los botones de opción, entran y salen del mapa todos en la parte norte, no se si sea el comportamieno predefinido, recuerdo que la primera vez que abri el archivo no ocurria eso,pero ahora me he topado con ello.

Me voy a meter en detalle al código y ya te expondre si hay algo en lo que te pueda aportar.

saludos, un abrazo de año nuevo

Enlace a comentario
Compartir con otras webs

Hola neverdelimon1, ¿no te has preguntado qué figura tienen los botones de opción moviéndose al norte del mapa?

Lo que se han perdido, por perder algún evento, son las coordenadas de las ciudades que representan esos botones por lo que tendrás que abrir el archivo original y copiar el rango Relojes!$P$3:$Q$36

Lo he probado en excel 2010 y funciona correctamente por un rato, después de unos 10 min. a veces + a veces -, aparece un error que dice expresión demasiado compleja, error 16 en tiempo de ejecución.

Me voy a meter en detalle al código y ya te expondre si hay algo en lo que te pueda aportar.

saludos, un abrazo de año nuevo

Dependiendo de la memoria RAM del equipo, funciona más o menos tiempo ya que por cada segundo que pasa ocupa 170 KB más (en una hora unos 600 MB) y ¡eso no lo tengo controlado!

¿Alguien me puede ayudar a reducir el consumo de memoria?

Enlace a comentario
Compartir con otras webs

Hola Pedro, varias cosillas. He estado analizando el archivo y lo que te comenté del scroleo de la pantalla me ocurre debido al evento Application.ScreenUpdate, lo he quitado de en medio y me va perfecto sin scrolear, supongo que se deberá al equipo que uses, version, Sistema operativo etc, unos lo notaran, otros no, pero a mi con eso ya se me quita.

Otra cosilla. El tema de la memoria ocurre en la funcion ValorReloj. He marcado en rojo las lineas que te estan creando el problema (quizas se me haya escapado alguna) y en verde la importancia de consumo. Cada vez que la celda A1 de la hoja "relojes" se actualiza con Now, Excel pide 250Kb mas de memoria a razon de 1 megabyte cada 4 actualizaciones. No se exactamente que tienes asociado a esa celda pero solo ocurre con esa. Revisa el codigo a partir de estas lineas a ver si consigues averiguar algo.

Sub ValorReloj(Optional GMT As String, Optional valGMT As Single, Optional fila As Long = 0)
Dim valTiempo As Date
Dim strGMT As String

If ActiveSheet.Name <> "Mundo" And _
ActiveSheet.Name <> "Relojes" Then Exit Sub

valTiempo = ConvertLocalToGMT(Now, True)

With Sheets("Relojes")
.Range("A1") = Now

[COLOR="Green"]'Esta linea consume unos 250kb/s[/COLOR]
[COLOR="Red"]'.Range("C1") = valTiempo[/COLOR]
End With

With Sheets("Mundo")
If GMT = "" Then
valGMT = .Range("C55").Value
strGMT = ValorGMT(valGMT)
Else
strGMT = GMT
End If
valTiempo = valTiempo + valGMT / 24

[COLOR="Green"]'Esta linea consume 4kb/s[/COLOR]
[COLOR="Red"]'.RelojDigital.Value = strGMT & " " & TimeValue(valTiempo) & " " & DateValue(valTiempo)[/COLOR]

If fila = 0 Then
fila = .Range("C56").Value
If fila = 0 Then
fila = valGMT + 14

[COLOR="Green"]'Esta linea consume 40-50kb/s[/COLOR]
[COLOR="Red"]'CopiaReloj "Reloj0", fila, strGMT[/COLOR]
Else
fila = fila + 2

[COLOR="Green"]'Esta linea consume 40-50kb/s[/COLOR]
[COLOR="Red"]'CopiaReloj "Reloj0", fila[/COLOR]
End If
Else

[COLOR="Green"]'Esta linea consume 40-50kb/s[/COLOR]
[COLOR="Red"]'CopiaReloj "Reloj0", fila[/COLOR]
End If
End With
End Sub[/CODE]

Sustituye la funcion por esa, veras como ya deja de consumir, asi vas haciendo pruebas con cada linea por separado.

Un saludo amigo

Enlace a comentario
Compartir con otras webs

Hola

He seguido haciendo pruebas y basto con parar el timer y volverlo a iniciar en cuanto abre el libro es decir paro el timer cuando se termina de cagar el libro y lo reinicio y listo ya no me dio ningun problema, lo deje trabajando mas de dos horas y todo bien, en cuanto al consumo de memoria lo más que me alcanzo a consumir fueron 36 000 KB y de ahi bajaba por ejemplo hasta el rango de 29 000 kB volvia a subir pero nuevamente no rebasaba los 36 000 KB, por mi parte me parece que el timer es el que le esta pesando a excel, ya que por experiencia en versiones anteriores cuando se usa muy recursivamente tal método Excel se torna muy inestable, quizás si usamos el timer de las funciones api podremos evitar los colapsos, voy a intentar con ese cambio y posteriormente comento.

Aprovecho para saludar a mi buen amigo verzulsan.

saludos cordiales

Enlace a comentario
Compartir con otras webs

Los Reyes Magos necesitan ayuda para llegar a todas las latitudes, con sus distintas zonas horarias, y llevar sus regalos a los niños.

Los amigos del foro podéis ayudarles contestando a la siguiente pregunta de magia:

estrella.jpg

¿Qué hay que hacer para que salga la Estrella en este Mapa Mundial (descárgalo aquí)?

Responde a este mensaje con tu respuesta.

Enlace a comentario
Compartir con otras webs

¿Ninguno de los 70 foreros que se han descargado este

puede ayudar a los Reyes Magos en su viaje, guiados por la Estrella de la Navidad?

hx82md.jpg

La estrella está formada con los botones de opción que localizan a las ciudades.

Repito la pregunta:

¿Qué hay que hacer para que salga esta Estrella en el mapa de relojes mundiales?

¡Quedan 2 días para ayudar a los Reyes Magos!

Enlace a comentario
Compartir con otras webs

Hola Master pegones

Acabo de decubrir algo jejejejeje, recuedas que te consulte sobre el comportamiento que me sucedia en la macro? en el que al momento de abrir el libro se movian en el norte los botones de opcion, entrando y saliendo, bueno pues ya le vi la forma y es la estrella de la que hablas, jejejejejeje, tiene asociado un sub, en mi caso no tengo que hacer nada porque desde la apertura con el evento se desencadena.

Sub ArrancaEstrella()...

Saludos cordiales

Enlace a comentario
Compartir con otras webs

Acabo de decubrir algo jejejejeje, recuedas que te consulte sobre el comportamiento que me sucedia en la macro? en el que al momento de abrir el libro se movian en el norte los botones de opcion, entrando y saliendo, bueno pues ya le vi la forma y es la estrella de la que hablas, jejejejejeje, tiene asociado un sub, en mi caso no tengo que hacer nada porque desde la apertura con el evento se desencadena.

Never, ahora que has visto la forma de la estrella y cómo se mueve cuando abres el archivo ¡o lo activas!, ya que ArrancaEstrella se llama en:

Sub Workbook_Activate()
...
ArrancaEstrella
...
End Sub[/CODE]

Tu respuesta es la fácil, pero hay otra forma de arrancar la estrella, por lo que la pregunta está medio contestada.

[i]A ver si eres capaz de contestar qué otra manera hay de que aparezca la estrella [b]¡sin mirar el código VBA![/b][/i]

Enlace a comentario
Compartir con otras webs

Hola master pegones

En mi caso se activa solito, lo cual resulta obvio puesto que esta asociado al evento activate del libro el cual se produce una vez abierto y cargado.

Creo que me voy a tener que conformar con la respuesta medio contestada :-( lo que pasa que intente dando clics con el boton derecho y mas experimentos pero me sale el error de que la expresion es demasiada compleja y de ahi ya no puedo hacer nada.

saludos cordiales

Enlace a comentario
Compartir con otras webs

Hola a todos; amigos: pegones, neverdelimon (los dos 1 [de hecho todos los amigos de aqui son 1, jejeje]) pues yo, su humilde servidor y amigo, la única respuesta que encontre para pegones respecto a tu pregunta ¿Qué hay que hacer para que salga esta Estrella en el mapa de relojes mundiales? a horas de que lleguen los Reyes Magos, es: descargar tu última versión y abrirla. Y ahora, espero que si no fuese esta tu respuesta a la pregunta, la digas ya que ya estoy a punto de volverme el hombre sin uñas, jajaja. Bueno amigos míos que tengan un excelente día y que la magia de este mismo tambien este presente en nuestros aportes, dudas y soluciones a la programación en excel durante todo el año.

Los saludo desde la ciudad de México, D.F.

Enlace a comentario
Compartir con otras webs

Hola Martín, siento decirte lo mismo que a neverdelimon1.

Hay otra respuesta posible pero no funciona en Excel 2003:

Creo que me voy a tener que conformar con la respuesta medio contestada :-( lo que pasa que intente dando clics con el boton derecho y mas experimentos pero me sale el error de que la expresion es demasiada compleja y de ahi ya no puedo hacer nada.

Siento que sólo funcione en Excel 2007 y 2010, por lo que espero respuestas de los foreros que los tengan instalados.

A los que tengan Excel 2003 en su perfil les admito buscar la respuesta analizando el código de los módulos VBA.

P.D.: neverdelimon1, en un mensaje anterior dijiste que lo probaste en Excel 2010 ¿con qué versión te falla?

Enlace a comentario
Compartir con otras webs

Hola master pegones

En excel 2010 funciona bien, hasta que comienza uno a dar clics sobre el mapa y se produce el evento mouse move, que es cuando se produce el error.

Y las manecillas no se aprecian tampoco en excel 2010

Creo que me tendre que conformar en esperar si alguien da con el truco para que salga la estrella, ojala que aparezca un rey mago

saludos cordiales

Enlace a comentario
Compartir con otras webs

Never, lamento que no veas las manecillas ¿cuáles, las de segundos? y, sobre todo, que tengas problemas con el evento MouseMove.

Por si te sirve de ayuda, prueba con la 2ª versión de este Mapa que voy a subir al Post #1

Incluye refresco mejorado de los relojes y geolocalización de las ciudades del mundo.

Espero que con esta versión haya alguna respuesta al truco para que salga la estrella.

¡Aunque sea tarde para los Reyes Magos!

Enlace a comentario
Compartir con otras webs

Como nadie ayudó a los Reyes Magos, tengo que publicar la respuesta.

La estrella sale intentando crear en el mapa la ciudad de Bethlehem o Belén.

Búscala en la hoja Ciudades o con la columna R de la hoja Relojes.

Anuncio que acabo de publicar información sobre la versión 2 del mapa en mi blog:

desde donde se puede descargar, siendo compatible con Excel 2007 y 2010.

La versión 2.0 cuenta con tres nuevas características:

  • Mapa Mundial con días y noches actualizado cada 15 minutos
  • Traducciones al español y al inglés
  • No aparecen estrellas ¡ya pasó el Día de Reyes!

RelojesMundialesPW20dinamico.jpg

Enlace a comentario
Compartir con otras webs

  • 3 weeks later...

He publicado en mi blog cómo se hace la

Al final de este vídeo se ven las manecillas de todos los relojes moviéndose al unísono:

Sólo lo he probado en Excel 2010 y los amigos me dicen que en Excel 2007 el proceso es muy lento y en un segundo no le da tiempo a refrescar los relojes y se emplean funciones que no soporta Excel 2003.

Son muy gratificantes las 1000 visitas que ha tenido este tema en un mes.

Enlace a comentario
Compartir con otras webs

Crear una cuenta o conéctate para comentar

Necesitas ser usuario para poder dejar un comentario

Crear una cuenta

Registrarse para una nueva cuenta en nuestra comunidad. ¡Es fácil!

Registrar una nueva cuenta

Conectarse

¿Ya tienes una cuenta? Conéctate aquí.

Conéctate ahora
  • 96 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      177
    • Comentarios
      90
    • Revisiones
      27

  • Crear macros Excel

  • Mensajes

    • Hola a ambos, @MarianoCruz, si con la respuesta de @Israel Cassales ya tienes resuelto el problema, perfecto. Punto final y a otra cosa. Pero piensa que tu archivo lleva vínculos externos, así que se hace difícil (prácticamente imposible) comprobar si las propuestas dadas ofrecen el resultado esperado. A tal efecto, te sugiero que vuelvas a subir otro archivo, esta vez insertando nuevas hojas que contengan los datos existentes en esos archivos externos.  Tal vez así se vea claro qué es lo que buscas conseguir, y se puedan hacer pruebas que verifiquen la bondad de el/los resultado/s. Tampoco iría mal que insertaras a mano qué resultado debe aparecer en la celda C3 en cada uno de los 3 casos: cuando se inserte 'XI', 'XL' o unos u otros números en los lugares apropiados. Así iremos totalmente sobre seguro acerca del método a emplear. Saludos,
    • Hi Trate de ver que hacían las fórmulas en cuestión pero a su libro le falta o le faltan hojas, por lo que solo podría participar con un par de ideas en general. Lo que entiendo es que según el valor de B3 en C3 debe poner una fórmula u otra, así que es posible que si combina DIRECCION() con INDIRECTO() pueda intercambiar de una fórmula a otra. =SI(B3="Xl",INDIRECTO(DIRECCION(3,5)),SI(O(B3=1,B3=2,B3=3),INDIRECTO(DIRECCION(4,5)),"")) Otra forma sería poner nombre a esas fórmulas en el cuadro de nombres para que las pueda mandar llamar a una o a la otra según el resultado de B3. Por favor tome en cuenta, es solo una idea.
    • Buenas tardes! Tengo el siguiente código: Private Sub btnCargaBancos_Click() Dim TasaCompra, TasaVenta As Double Dim InvBanesco, InvVzla, MontoBanesco, MontoVzla As Double Dim TasaDiaBan, TasaDiaVzla, TasaActual As Double 'Inversion = Val(txtInversion.Text) InvBanesco = Val(CDbl(txtInverBanesco.Text)) InvVzla = Val(CDbl(txtInverVzla.Text)) TasaCompra = Val(CDbl(txtTasaCompra.Text)) TasaVenta = Val(CDbl(txtTasaVenta.Text)) MontoBanesco = (InvBanesco / TasaCompra) * (1 - 0.18 / 100) * (TasaVenta * (1 - 0.18 / 100)) MontoVzla = (InvVzla / TasaCompra) * (1 - 0.18 / 100) * (TasaVenta * (1 - 0.18 / 100)) TasaDiaBan = (MontoBanesco / InvBanesco) * (1 - 0.055)      TasaDiaVzla = (MontoVzla / InvVzla) * (1 - 0.055) If TasaDiaBan < TasaDiaVzla Then     TasaActual = TasaDiaBan Else     TasaActual = TasaDiaVzla End If MontoBanesco = FormatNumber(MontoBanesco, 2, True, vbFalse) MontoVzla = FormatNumber(MontoVzla, 2, True, vbFalse) TasaActual = FormatNumber(TasaActual, 5, True, False) txtBcoBanesco.Value = MontoBanesco txtBcoVenezuela.Value = MontoVzla txtTasaDiaria.Value = TasaActual End Sub   Como se puede apreciar InvBanesco ,  InvVzla , TasaCompra y TasaVenta, son valores que introduce el usuario a través de los respectivos cuadros de texto. Tengo los siguientes problemas: a. Las fórmulas no se ejecutan correctamente (pareciese que no reconociese los números entrados vía cuadros de texto). b. Al darle valor cero (0) a cualquiera de los valores de InvBanesco o  InvVzla, me genera un error en TasaDiaBan o TasaDiaVzla (según sea el caso), aunque, como se puede apreciar, debería generar un valor cero (0). Como dije en mi presentación estoy empezando en esto de la codificación...y quiero aprender de Uds! Agradezco su ayuda! Nota: lamentablemente el fichero es mas grande de lo permitido y no pude anexarlo.  
    • Hola buenas tardes. En una hoja plantilla donde realizo diferentes consultas de datos. tengo ya establecido dos formulas diferentes con función SI y buscar. estos buscan diferentes rangos de datos y recibendiferentes resultados. Cada formula varia según una palabra o numero  ejemplo si pongo Xl pone la formula 1 y si pongo cualquier numero entre 1 y 3 pone la segunda formula. Lo que necesito hacer es que si en una celda de la columna B3 pongo XL debería de considerar la formula 1 y si pusiera el numero 1 me pondría la segunda formula, dentro de la misma formula. Ya agregue la función SI($C3="Xl",Formula1.. Pero no me funciona, espero me puedan ayudar.   Muchas gracias Mariano   Formula doble si en celda existe.xlsx
    • Sub control2558() Application.ScreenUpdating = False Dim I As Integer I = 4 While Sheets("FT-ADF-2558").Cells(I, 102) <> "" Sheets("FT-ADF-2558").Cells(6, 82) = Sheets("FT-ADF-2558").Cells(I, 102) Dim NombreArchivo, RutaArchivo As String NombreArchivo = "Hoja Control " & Sheets("FT-ADF-2558").Cells(I, 102) RutaArchivo = ActiveWorkbook.Path & "\" & NombreArchivo & ".xlsm" Dim NuevoLibro As Workbook Set NuevoLibro = Workbooks.Add Sheets("FT-ADF-2558").Copy Before:=NuevoLibro.Sheets(1) NuevoLibro.SaveAs Filename:=RutaArchivo NuevoLibro.Close I = I + 1 Wend MsgBox ("Proceso generado con éxito") Application.ScreenUpdating = True End Sub  
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.