Ejecutar macro varias veces si se cumple una condición
Tengo la siguiente macro que me envía automáticamente un mail cada XX minutos al finalizar un proceso, y me copia en el texto la celda A5 de una hoja.
Sub ENVIAR_MAIL()
'
' ENVIAR_MAIL Macro
' Macro grabada el 24/02/2013 por EMILIO
'
Dim iMsg As Object
Dim iConf As Object
Dim strbody As String
Dim Flds As Variant
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
iConf.Load -1 ' CDO Source Defaults
Set Flds = iConf.Fields
With Flds
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "[email protected]"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "YYYYYYYYYYYYY"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
'Si te da error : Conectando con el servidor
'Intenta cambianddo el SMTP puerto de 25 to 465
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Update
End With
strbody = "Buenos días, se envía una alerta de XXXXXXXXXX"
With iMsg
Set .Configuration = iConf
.To = "[email protected]"
.CC = ""
.BCC = ""
.From = """ENVÍO DE ALERTAS"" <[email protected]>"
.Subject = "mensajito de alerta"
.TextBody = Trim([a5].Value)
.Send
End With
End Sub
Lo quiero complicar un poco más y me lio, o bien me manda cien mails iguales o no me manda ninguno...
La idea es la siguiente:
- ejecuto la MACRO1
- tras ejecutarla, en la hoja.datos se refrescan valores en un rango muy grande (por ejemplo a1:h99)
- tras compararse esos valores con unas condiciones que tengo en celdas me pone los RESULTADOS en la columna J, desde J1:J99 (con estos valores son con lo que quiero ejecutar la nueva macro de envío de mails)
- tengo lista la MACRO2 (que es la que va a enviar los mails) y me funciona (la de arriba)
Lo que quiero es que si cualquier valor del rango J1:J99 es por ejemplo > -5 y <+4 que mande un mail que incluya en el cuerpo el texto de las celdas Ax:Hx, siendo la x el valor de la celda de la columna J que lanza el mensaje.
Pero puede haber en J1:J90 por ejemplo 15 celdas que cumplan ls condiciones, por lo que debe mandar 15 mails, uno por cada condición....
No sé si eso provocará que se cuelgue la macro si la pretenden llamar desde varias celdas a la vez o es mejor que se ataque a una función por cada celda, vosotros veréis
Os quedo muy agradecido.