Excel - macro para crear mensajes de alerta

 
Vista:
sin imagen de perfil

macro para crear mensajes de alerta

Publicado por Mauricio (23 intervenciones) el 20/10/2016 21:45:10
Buenas tardes amigos del foro, una vez mas recurro a ustedes para solicitar ayuda con el siguiente tema...
En un libro de excel, estoy criando una pequeña agenda de compromisos, lo que necesito es que una hora antes y luego de 10 en 10 minutos me muestre una alerta del compromiso...
Agradezco su atención.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

macro para crear mensajes de alerta

Publicado por Antoni Masana (2477 intervenciones) el 21/10/2016 08:09:59
En primer lugar debes tener el libro abierto para que funcione la alarma.

En la pestaña ThisWorkbook copia este texto:

1
2
3
4
5
Option Explicit
 
Sub Workbook_Open()
    Menu.Show
End Sub

En lugar de llamar al Menu.Show tiene que llamar a la función Tiempo que pongo a continuación

Crea un modulo y copia este texto

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Option Explicit
 
Sub Tiempo()
    ' --- Mediante esta instruccion "llamamos" a "Actualizarreloj" para volver a _
             actualzizar el Label con la hora
 
    Application.OnTime Now + TimeValue("00:00:01"), _
                Procedure:="Actualizarreloj", _
                Schedule:=True
End Sub
 
Sub Actualizarreloj()
    ' --- Coloca la hora en el Label del UserForm
    [A1] = Time
    ' --- "Llama a la rutina que cada 01 segundo "llama" a "Actualizarreloj" _
           para volver a actualzizar el Label con la hora
    Call Tiempo
End Sub
 
Sub Detener_reloj()
    ' --- Detiene el "OnTime"
 
    Application.OnTime Now + TimeValue("00:00:01"), _
                Procedure:="Actualizarreloj", _
                Schedule:=False
 
    ' --- Application.OnTime EarliestTime:=Now + TimeValue("00:00:01"), _
                      Procedure:="Actualizarreloj", _
                      Schedule:=False
End Sub

En la función Actualizarreloj cambia [A1] = Time por tu función de verificación de alarmas y ya esta solucionado.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

macro para crear mensajes de alerta

Publicado por Mauricio (23 intervenciones) el 21/10/2016 14:24:27
Amigo Antoni, gracias por tu respuesta y ayuda con este tema, te comento que hice como describiste, guarde y cerré el libro, ahora al abrirlo me sale un mensaje de error: se abre el editor de visual basic y sale: Error de compilación, no se ha definido la variable.
permitirme disipar las siguientes dudas; mi libro tiene varias hojas, una de ellas llamada "agenda", las citas o reuniones que se programan para alertar al usuario, se graban a una hoja llamada "citas" donde estan los encabezados fecha, hora, recordatorio, actividad, persona, tema y lugar...
son estos datos que deben mostrarse con la alarma...
en una parte de tu macro, veo que se hace referencia a un userform;

Sub Actualizarreloj()
' --- Coloca la hora en el Label del UserForm
[A1] = Time
' --- "Llama a la rutina que cada 01 segundo "llama" a "Actualizarreloj" _
para volver a actualzizar el Label con la hora
Call Tiempo
End Sub

hay que crear un Userform?

Disculpa amigo Antoni, notaras que soy novato en el tema, por eso tantas dudas...
Ahh... podría programar varias citas para el mismo día a diferentes horarios, la alarma me avisaría para cada una de ellas?

Mil gracias por tu colaboración. Aguardo tu respuesta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

macro para crear mensajes de alerta

Publicado por Antoni Masana (2477 intervenciones) el 01/11/2016 10:05:28
Creo que no he realizado bien las explicaciones de como copiar el código.

El la pestaña de "Programador" del Excel Selecciona el Icono Visual Basic.

En la carpeta Microsoft Excel Objetos del libro hay uno que se llama: ThisWorkbook copia este el texto:


1
2
3
4
5
Option Explicit
 
Sub Workbook_Open()
    Tiempo
End Sub

Ahora crea un Modulo y copia este texto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Option Explicit
 
Sub Tiempo()
    ' --- Mediante esta instruccion "llamamos" a "Actualizarreloj" para volver a _
             actualzizar el Label con la hora
 
    Application.OnTime Now + TimeValue("00:00:01"), _
                Procedure:="Actualizarreloj", _
                Schedule:=True
End Sub
 
Sub Actualizarreloj()
    ' --- Coloca la hora en el Label del UserForm
    [A1] = Time
    ' --- "Llama a la rutina que cada 01 segundo "llama" a "Actualizarreloj" _
           para volver a actualzizar el Label con la hora
    Call Tiempo
End Sub
 
Sub Detener_reloj()
    ' --- Detiene el "OnTime"
 
    Application.OnTime Now + TimeValue("00:00:01"), _
                Procedure:="Actualizarreloj", _
                Schedule:=False
End Sub

Si guardas el libro con la extensión xlsm y lo vuelves a abrir, en la celda A1 de la primera hoja pondra la hora y la ira actualizando cada segundo.

Hasta aquí he realizado la prueba y me funciona sin ningun problema.

Para realizar una prueba simple cambia:

1
[A1] = Time

por

1
Sheets(1).Cells(1, 1) = Time

Pondra la hora en la celda A1 de la primera hoja:


Una vez funcione




En tu caso deberias modificar la función algo asi como:

1
2
3
4
5
6
Sub Actualizarreloj()
    Call Verifico_Alarmas
    ' ---  Llama a la rutina que cada 01 segundo "llama" a "Actualizarreloj" _
           para volver a actualzizar el Label con la hora
    Call Tiempo
End Sub

¿Que hace Verifico_Alarma?

Es una macro que debe comprobar la agenda, dar un aviso cuando corresponda, hacer una marca de alguna forma para avisar dentro de diez minutos, etc.

¿Como hacerlo?

Creas la macro, la ejecutas repetidas veces manualmente, cambiando fechas y horas para que no se haga eterno, el lugar de 10 minutos le pones 1 o medio, cuando estés satisfecho añades la llamada a tu función a la Macro Actualizarreloj y problema resuelto

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

macro para crear mensajes de alerta

Publicado por Mauricio (23 intervenciones) el 01/11/2016 14:43:47
Buen día amigo Antoni, mil gracias por la explicación y el código, ya lo copie tal como indicas y funciona a la perfección, me pone hora actualizada....pero como hago para programar que revise los compromisos?, siendo que en mi lista de compromisos, en la celda C5 va la fecha, en la celda C6 va la hora.... esto es del primer compromiso... suponiendo que para ese día tengo tres compromisos programados, en otras celdas tendré otras fechas y otras horas, o la misma fecha pero diferentes horas.. por ejemplo:
compromiso 1: 05/11/2016 09:30 hrs.
compromiso 2: 05/11/2016 12:00 hrs.
compromiso 3: 05/11/2016 15:30 hrs.

Así, cuando este cerca de la hora del primer compromiso, me de una señal de audio, que podría ser un archivo de audio pre grabado en un directorio especifico del computador, y un mensaje de texto... y lo mismo cuando este cerca del segundo compromiso y así sucesivamente....
Ahh.. podría la misma macro, eliminar cada compromiso después de cierto tiempo de haber transcurrido el mismo?.. por ejemplo 10 minutos después que termino el compromiso...
Disculpa, es un poco complicado, verdad?
mil gracias nuevamente amigo, aguardo tus comentarios.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

macro para crear mensajes de alerta

Publicado por Antoni Masana (2477 intervenciones) el 03/11/2016 07:30:58
Buenos días Mauricio.
Me alegro que ya te funcione.
Ahora viene el quid de la cuestión y la pregunta clave: ¿Sabes programar en VBA? es decir Visual Basic para Aplicaciones.
Si no sabes te puedo hacer la parte más complicada que es activar la alarma, el resto lo dejo a tu gusto, un Aviso tipo PopUp o Ventana emergente, un sonido, etc., pero necesito el libro con algunos ejemplos y alguna explicación de su extensión, si estará todo en una hoja o en varias, cuantas alarmas puede tener, borrar o marcar como ya avisara, etc.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

macro para crear mensajes de alerta

Publicado por Mauricio (23 intervenciones) el 03/11/2016 15:55:13
Gracias mi amigo Antoni por tu gentil ayuda, estoy subiendo un archivo para ilustrar lo que necesito.
en el archivo de ejemplo, son solo dos hojas, Agenda y Base agenda, en mi libro principal son mas, pero estos hacen parte de el...
Mil gracias amigo nuevamente.
Quedo atento a tus comentarios.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

macro para crear mensajes de alerta

Publicado por Antoni Masana (2477 intervenciones) el 04/11/2016 10:24:45
Tengo algunas dudas:

¿Cómo introduces los Compromisos de la agenda?

¿Es en el área B1:D31?

¿Solo tienes un máximo de 5 compromisos?

En el ejemplo:

A las 09:00:00 se elimine el compromiso1 es decir se copia los datos a la base de datos y se limpian las celdas D3:D7

En el libro he añadido una hoja nueva que llamo propuesta.

En esta hoja he añadido 4 columnas al rango B40:F45 estas sirven para las alarmas.

• En la columna A esta estado de las alarmas.
• En la columna B la hora de la primera alarma, cuando se activa esta cambia la columna A el valor 2
• En la columna C la hora de la segunda alarma, cuando se activa esta cambia la columna A el valor 3
• En la columna D la hora de la tercera alarma, cuando se activa esta cambia la columna A el valor 4
• En la columna E la hora de copiar y borrar las celdas de la parte del compromiso y cambia la columna A el valor 1

He creado un nuevo libro con una propuesta de distribución de los datos. Tres hojas:

• AGENDA: donde introduces los compromisos
• BASE AGENDA: Histórico
• ALARMAS: Done están las alarmas para la macro

En la linea función Actualizarreloj llamo a la función Alarma

En el primer libro he puesto tras funcionas para cada una de las alarmas pero se puede solventar con una sola función que llamo en el segundo libro Avisame

Si te parece bien el ejemplo 2 trabajo sobre él

NOTA: Habia puesto el codigo aqui pero quedaba muy largo, es mejor verlo en el libro.

Que opinas.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

macro para crear mensajes de alerta

Publicado por Antoni Masana (2477 intervenciones) el 04/11/2016 11:58:59
Codigo para reproducir un sonido de alarma desde Excel

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Option Explicit
 
Private Declare Function PlaySound Lib "winmm.dll" _
                Alias "PlaySoundA" (ByVal lpszName As String, _
                                    ByVal hModule As Long, _
                                    ByVal dwFlags As Long) As Long
 
Const SND_SYNC = &H0        '(por defecto) Reproduce el sonido 'sincrónicamente
                            '.  Se interrumpe la ejecución de nuestro código hasta la finalización del sonido!!.
Const SND_ASYNC = &H1       ' Reproduce el sonido 'sincrónicamente'. El código continúa sin 
                            '   necesidad de que el sonido finalice.
Const SND_NODEFAULT = &H2   ' En caso no se encuntre el sonido determinado no reproduciría 
                            '   el sonido por defecto, es decir, no sonaría nada...
Const SND_LOOP = &H8        ' Se reproduce el sonido ininterrumpidamente hasta que se ejecute 
                            '   de nuevo la función.
Const SND_NOSTOP = &H10     ' El sonido no se para antes de reproducir el sonido especificado.
 
Const SND_APPLICATION = &H80
Const SND_ALIAS = &H10000
Const SND_ALIAS_ID = &H110000
Const SND_FILENAME As Long = &H20000
Const SND_MEMORY = &H4
Const SND_NOWAIT = &H2000
Const SND_PURGE = &H40
Const SND_RESOURCE = &H40004
 
Sub Beep()
    Call PlaySound("C:\Windows\Media\Tada.wav", SND_ASYNC, SND_ASYNC Or &H20000)
End Sub

Saludo.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

macro para crear mensajes de alerta

Publicado por Mauricio (23 intervenciones) el 04/11/2016 14:16:00
Hola Antoni, buen dia mi hermano, gusto en saludarte y nuevamente agradecer tu valiosa ayuda.
te respondo por puntos:
Los compromisos en la agenda los introduzco en las celdas D3:D31.
En principio trabajo con cinco compromisos, siendo los mismos cambiadnos día a día.
El libro2 esta super, lo he revisado y es lo que necesito, pero no me da las alertas, sera por mi versión de windows o de office?, tengo el windos 10 y el office 2016.... aunque lo ideal seria que me funciones con cualquier versión verdad?
si tu crees conveniente contar con mas espacio para mas compromiso, adelante mi hermano.
tu crees que se podría poner un calendario semanal en la hoja para ahí poner los compromisos?, creo que eso complicaría el trabajo, verdad?
Bueno amigo Antoni, aguardo tus comentarios.
Una vez mas mil gracias por tu ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

macro para crear mensajes de alerta

Publicado por Antoni Masana (2477 intervenciones) el 08/11/2016 09:54:57
Buenos días.

Te adjunto el libro con la macro finalizada.

Cuando es la hora de la alarma genera un sonido y colorea la celda de la fecha de la hoja Agenda.

VERDE - Falta 30 minutos
NARANJA - Falta 15 minutos
ROJO - Falta 5 minutos.

He puesto tres sonidos básicos de Windows pero es mejor que los cambies por algo más potente.
Cada vez que hace alarma graba el fichero para que cuando lo vuelvas a abrir este actualizado.

IMPORTANTE: Si abres otro libro Excel pueden pasar dos cosas:
1.- Que no puedas trabajar.
2.- Que falle la macro.

Para que la agenda funcione el libro tiene que estar abierto todo el dia. Si lo cierras es como si le quitas la pila al reloj, no hay alarmas.

Espero que te guste y que funcione bien.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

macro para crear mensajes de alerta

Publicado por Mauricio (23 intervenciones) el 08/11/2016 16:31:03
Hola Antoni, buen día mi hermano, te comento que abro el libro pero al escribir la primera hora para hacer pruebas me da el siguiente error:

Se ha producido error 13 en tiempo de ejecución:
No coinciden los tipos

Hora_1 = Format(.Cells(Lin, 2), "hh:mm:ss")


A que podrá deberse?

el dato que inserto es la fecha: 08/11/2016 y me salta de inmediato ese error....
Aguardo tus comentarios amigo.
Un abrazo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

macro para crear mensajes de alerta

Publicado por Antoni Masana (2477 intervenciones) el 09/11/2016 11:47:24
He corregido varios errores.
He puesto dos botones para parar y arrancar el Reloj.
He ocultado la hoja de alarmas.
He visto que a veces no me deja cerrar el libro, si paro el reloj ya lo puedo cerrar.
Cuando Realiza un cambio en la agenda guarda el cambio.
Si entras una nueva tarea o modificas una ya puesta no se guarda hasta que se active una alarma o lo guardes manualmente.


Espero que te guste y que funcione bien.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

macro para crear mensajes de alerta

Publicado por Mauricio (23 intervenciones) el 09/11/2016 14:46:49
Hola Antoni, buen día mi hermano, como estas? quedo perfecto, esta muy bueno, funciona todo, mil gracias amigo....
Solo una consulta, al mismo tiempo que de la alarma,podría dar un mensaje de texto en la pantalla que alerte del compromiso? tipo un textbox... o algo así? digo, solo si se pudiera.
Mil gracias una vez mas mi hermano, aguardo tus comentarios.
Un abrazo cordial, miles de bendiciones...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

macro para crear mensajes de alerta

Publicado por Antoni Masana (2477 intervenciones) el 09/11/2016 21:25:42
Se puede poner lo que quieras, como primera opción de aviso he coloreado la celda de la fecha como explique anteriormente.

Cuando es la hora de la alarma genera un sonido y colorea la celda de la fecha de la hoja Agenda.

VERDE - Falta 30 minutos
NARANJA - Falta 15 minutos
ROJO - Falta 5 minutos.

También se puede abrir un PopUp o ventana emergente pero esto detiene el reloj.

Lo que si haría en tu lugar es cambiar los sonidos por algo un poco mas alto y mas largo. Si no se oye el sonido menos vas a ver un mensaje en pantalla que puede quedar en segundo plano.

En la función que ejecuta los sonidos puedes poner lo que quieras que para gustos los colores.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

macro para crear mensajes de alerta

Publicado por FABTEC (1 intervención) el 03/10/2019 22:55:18
Hola, quería hacer la consulta ya que estaba viendo la agenda y esta buenísima, pero tengo un problema, ya que yo utilizo varios libros a la vez abiertos en el mismo pc, por lo que al tener abierta la agenda me da error por estar iniciada la hora.
alguna solución para ese problema? que no interrumpa los demás archivos de excel abiertos.

Agradecería esa ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar