Quiero ver la manera de que cuando se llegue una fecha, el VBA me mande un Mensaje a mi correo

Quiero ver la manera de que cuando se llegue una fecha, un un listado de excel, el VBA me mande un Mensaje a mi correo ya que es importante renovar ciertas firmas

esta es la macro que estoy usando actual mente lo que quiero a hora es hacer que se evalúe la fecha con la de la pc y no con una de el libro de excel.

Private Sub Worksheet_Change(ByVal Target As Range) 'por luismondelo
Dim Empresa As String Dim vigencia As String
Empresa = 0 Empresa = ActiveCell.Offset(0, 1).Value vigencia = 0 vigencia = ActiveCell.Offset(0, 4).Value
If Target.Column <> 6 Then Range("a2").Select Do While ActiveCell.Row <> 23 If ActiveCell.Value = Date Then Set parte1 = CreateObject("outlook.application") Set parte2 = parte1.createitem(olmailitem) parte2.to = "[email protected];[email protected]"
parte2.Subject = "Se vence firma electrónica" & " de la empresa " & Empresa
parte2.body = "Renovar la FIEL de la empresa" & " " & Empresa & " el día " & vigencia
parte2.display 'en lugar de display poner send para enviar el correo
MsgBox ("mensaje enviado, recuerda modificar las fechas de la columna A. Ya que renueve las firmas para que no se envíen nuevos mensajes")
Exit Do End If ActiveCell.Offset(1, 0).Select Loop End If Set parte1 = Nothing Set parte2 = Nothing
End Sub
Sub Concidenfechas()
ActiveSheet.Range("G2").Value = " " If ActiveSheet.Range("G2").Value = "Not" Then ActiveSheet.Range("g2").Value = " " Else: ActiveSheet.Range("g2").Value = "Enviar Correo" End If
End Sub

1 Respuesta

Respuesta
1

Actualmente valida la fecha contra la pc: "If ActiveCell.Value = Date Then", o cuál es el detalle que quieres cambiar?

Lo que pasa que lo que intento hacer es que me si coincide la fecha de "columna A" con la fecha de pc, se me envíe un correo a mi cuenta en automático, lo que esta pasando horita es que tengo una auto forma ligada a la macro y cuando acceso a la pagina de excel le tengo que dar click a la auto forma para que me mande el correo si coinciden las fechas. lo que yo quiero hacer es que cuando yo habrá la hoja de excel solo se active la macro y me mande el correo si se cumple la regla.

Tienes que pasar tú código a ThisWorkbook, para que en automático se active tu macro.

Del lado izquierdo de VBA tienes el Proyecto VBA, Dale doble click en ThisWorkbook

Del lado derecho te aparece un panel, por default tiene (General), selecciona Workbook y te aparece lo siguiente:

Private Sub Workbook_Open()

Aquí pones tu código

End Sub

Hola Experto Dam, mira hice el proceso que me indicaste y me marco este error :

"Error de compilación:

La declaración del procedimiento no coincide con la descripción del evento o el procedimiento que tiene el mismo nombre"

Private Sub Workbook_Open(ByVal Target As Range) 'por luismondelo Dim Empresa As String Dim vigencia As String Empresa = 0 Empresa = ActiveCell.Offset(0, 1).Value vigencia = 0 vigencia = ActiveCell.Offset(0, 4).Value If Target.Column <> 6 Then Range("a2").Select Do While ActiveCell.Row <> 23 If ActiveCell.Value = Date Then Set parte1 = CreateObject("outlook.application") Set parte2 = parte1.createitem(olmailitem) parte2.to = "[email protected];[email protected]" parte2.Subject = "Se vence firma electrónica" & " de la empresa " & Empresa parte2.body = "Renovar la FIEL de la empresa" & " " & Empresa & " el día " & vigencia parte2.display 'en lugar de display poner send para enviar el correo MsgBox ("mensaje enviado, recuerda modificar las fechas de la columna A. Ya que renueve las firmas para que no se envíen nuevos mensajes") Exit Do End If ActiveCell.Offset(1, 0).Select Loop End If Set parte1 = Nothing Set parte2 = Nothing End Sub Sub Concidenfechas() ActiveSheet.Range("G2").Value = " " If ActiveSheet.Range("G2").Value = "Not" Then ActiveSheet.Range("g2").Value = " " Else: ActiveSheet.Range("g2").Value = "Enviar Correo" End If End Sub

Pero tienes que quitarle esto: ByVal Target As Range, te debe quedar así:

Private Sub Workbook_Open()

me los sospeche desde un principio jajaja

Gracias voy a checar

Y si funcionó

Puedes cerrar la pregunta

me marca conflicto con esto:

If Target.Column <> 1 Then

Me dice que:

Se a producido el error '91' en tiempo de ejecución: variable de objeto o bloque whith no establecido.

E intente poder

Dim Target As Range y no funciono

No puedo reproducir la macro, no viene completa, si quieres mándame tu archivo de excel, con algunos datos para reproducirla.

[email protected]

Dam creo me pusiste mal el correo

Se me devolvió el correo

Perdona, intenta con este [email protected]

Solo tienes que comentar 3 líneas, te mando la macro con los cambios, funciona muy bien!
Private Sub Workbook_Open()
Dim Target As Range
Dim Empresa As String
Dim vigencia As String
Empresa = 0
Empresa = ActiveCell.Offset(0, 1).Value
vigencia = 0
vigencia = ActiveCell.Offset(0, 4).Value
'If Target.Column <> 1 Then
Range("a2").Select
Do While ActiveCell.Row <> 23
If ActiveCell.Value = Date Then
Set parte1 = CreateObject("outlook.application")
Set parte2 = parte1.createitem(olmailitem)
parte2.to = "[email protected];[email protected]"
parte2.Subject = "Se vence firma electrónica" & " de la empresa " & Empresa
parte2.body = "Renovar la FIEL de la empresa" & " " & Empresa & " el día " & vigencia
parte2.display
MsgBox ("mensaje enviado, recuerda modificar las fechas de la columna A. Ya que renueve las firmas para que no se envíen nuevos mensajes")
'Exit Do
End If
ActiveCell.Offset(1, 0).Select
Loop
'End If
Set parte1 = Nothing
Set parte2 = Nothing
End Sub

Disculpa Dam

Este que pegaste a lo ultimo es el bueno por que me marca el mismo Error o me lo enviaste al correo?

Este que pegué es el bueno

La linea 'If Target. Column <> 1 Then, va comentada, ya no te debe marcar error, por lo menos en la misma línea. Revísala

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas