Te dejo la primer macro, la más básica, para que veas el código (va explicado en cada línea) . Hay detalles que no aclaraste en la consulta:
1- Al abrir el libro... entonces va en el evento Open
2- ¿Qué celdas se revisan? ¿Todas las de col Q? ¿Dónde aparece la dirección de envío? ¿Cuál es el texto a enviar? ¿Cuál es el cuerpo del mensaje a enviar?
3- No dice 'rojo' en ninguna celda. Entonces hay que evaluar cuando esa celda Q se coloca de rojo... ¿tiene un formato condicional? La macro puede evaluar la condición del formato, no siempre el color.
Sub enviaMail_Ej1()
'x Elsamatilde
'-------EJEMPLO 1: Envío de un mensaje a un destinatario
'Las variables se utilizan para indicar las referencias.
Dim myOLApp
Dim myOLItem
Dim olMailItem
Dim miasunto As String, mitexto As String, midire As String
'se la celda Q8 está vacía cancela el proceso
If Range("Q8") = "" Then Exit Sub
'aquí aún se debe evaluar si está en rojo o no.
'ajustar según las refeencias de cada libro
midire = Range("A8").Value 'O UNA DIRECCIÓN PREDEFINIDA: midire = "[email protected]"
miasunto = "Aviso de Vto"
mitexto = "Estimado Cliente: comunicamos a Ud el vto ........."
'se crea un objeto Outlook, Mail
Set myOLApp = CreateObject("Outlook.Application")
Set myOLItem = myOLApp.CreateItem(olMailItem)
'se establecen los campos del mensaje
With myOLItem
.To = midire 'campo A o Para
.Subject = miasunto 'campo Asunto
.Body = mitexto 'cuerpo del mensaje
.Display '.send 'mostrar o enviar
End With
'se liberan las variables creadas
Set myOLApp = Nothing
Set myOLItem = Nothing
End Sub
Arma la macro a tu caso siguiendo este modelo y luego si te quedan puntos por desarrollar, dejame nuevas consultas en el tablón una vez valorada ésta.
Sdos
Elsa