.
En el post Formulario que emite aviso y envía mail hay una versión similar a la de este ejemplo, tiene unas variantes que se aplican a casos más específicos, en el post actual se presenta una macro que emite un aviso y envía mails, recorriendo todas las filas con datos, los dos ejemplos mencionados son parecidos, pero tienen sus variantes, se han agregado los dos para que cada lector use el que más se adapta a su libro de Excel.
También en macro que envía mails se trató el tema sobre como enviar mail con Excel usando, Gmail, Hotmail o Yahoo, en dicho post había un listado de casillas de correo a las cuales había que enviarles un correo electrónico; para ello se usaba un bucle que recorre desde la fila inicial a la final, en cada recorrido envía un mails a los distintos destinatarios que están en la fila respectiva, es una Macro de Excel realizada en VBA que da solución a un sin numero de lectores que buscan poder enviar mails desde Excel.
El ejemplo de macro que aquí se muestra es bastante útil cuando se pretende que en el Libro de Excel, salga un AVISO sobre algún evento dependiendo de una fecha de realización o ejecución de determinada acción, básicamente esta Macro de Excel corre un formulario dando un AVISO y posteriormente ENVIANDO UN MAIL al destinatario del aviso, el cual se debe configurar en la respectiva función, tema que veremos antes de finalizar el post.
En el libro de Excel se tienen una serie de fechas, que representan la fecha límite para realizar una acción determinada, la columna F tiene la fecha de realización de la tarea mencionada; en la columna B se encuentran los ID de los equipos y es la columna donde la macro se fija recorre hasta la última fila con datos, por ello es importante que no esté vacía ya que de lo contrario la macro se detiene; de la columna H se obtiene el segundo mail donde enviar el aviso, el primero mail se configura directamente en el módulo como se explica más abajo.
Un ejemplo práctico sobre su uso podría ser, que en la columna H del ejemplo, se agreguen los mails de los distintos supervisores del área y en el módulo sendmail del código se configure el mail del supervisor general, o encargado de todos los departamentos, de esta manera cuando encuentre una máquina o equipo que requiera service, enviará un mail al supervisor del área y el encargado general; el ejemplo planteado es muy útil y bastante común en muchas empresas que tienen máquinas y requieren service cada cierto tiempo.
Al abrir el libro de Excel primero se ejecuta un procedimiento de VBA que se encuentra en ThisWorkbook, está línea de código llama a otro procedimiento que se encuentra en el Módulo AvisoMail, el cual determina en cada fila si la fecha de la columna F, es igual o anterior a la fecha del sistema; en caso que la respuesta sea Verdadera; procede a mostrar el UserForm3, cuya programación interna consiste en que el formulario esté 2 segundos y se cierre solo, posterior a ello se llama la función que envía mails desde Excel, esto se hace con cada una de las filas que contenga datos del departamento en cuestión.
Es necesario hacer algunas consideraciones sobre la configuración de la PC; primero, para que funcione, el envío de mails, se debe agregar una referencia en el Editor de Visual Basic que es Microsoft CDO for Windows 2000 Library, haciendo click en la imagen siguiente, se podrá observar con más lujos de detalle, la referencia que se debe agregar para que se puedan envíar mails desde Excel.
Bien configurado esto, viene el otro paso para que se puedan enviar mails con Excel y no salte error; la función que envía mail está por defecto configurada para Gmail, no obstante se agrega en forma de comentario ( ‘ apostrofe), el servidor Smtp de Yahoo y Hotmail, que son los correos más populares, si no se tiene estos correos, se puede probar con otros y configurar servidor Smtp y el puerto de salida, lo cual dejaría enviar mails y no daría errores.
El servidor Smtp de Google es «smtp.gmail.com»; el de Hotmail es «smtp.live.com» y el de Yahoo es: «out.izymail.com»; en el caso que se tuviera una modificación, se debe buscar en google cual es el servidor smpt y puerto del correo que estemos usando.
MASTERCARD PAYONEER |
Una vez finalizado el paso anterior, se deben realizar otras modificaciones y de esta manera estar condiciones de enviar mails, se debe colocar el nombre de usuario y clave del correo que envía los mails; como así también cual es el mail de origen, cual el de destino. Seguidamente se muestra los códigos utilizados.
Para finalizar con el desarrollo y en el caso que no tengas conocimiento suficiente sobre el manejo de hojas de Excel, te recomiendo antes de introducirte en el mundo de las macros, que leas un excelente libro sobre Excel el que te ayudará manejar las planillas de cálculo, debes hacer click acá, si quieres un libro sobre Excel, en inglés, entonces debes hacer click acá.
Private Sub Workbook_Open()
Call Aviso
End Sub
Código que se inserta en un módulo
Sub Aviso()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
Dim fila, av, avEq, avDep As String
Dim fserv As Date
fila = 4
While Sheets(«Hoja1»).Cells(fila, 2) <> Empty
fserv = Sheets(«Hoja1»).Cells(fila, 6).Value
If fserv <= Date Then
avID = Sheets(«Hoja1»).Cells(fila, 2)
avDep = Sheets(«Hoja1»).Cells(fila, 3)
avEq = Sheets(«Hoja1»).Cells(fila, 5)
dest1 = Sheets(«Hoja1»).Cells(fila, 8)
msj = «El equipo » & avEq & » del departamento » & avDep & » Requiere Service, el ID es » & avID
UserForm3.Show
Sdm = SendMail_mail()
End If
fila = fila + 1
Wend
Application.DisplayAlerts = False
Application.ScreenUpdating = True
End Sub
‘Dimensiono variables
Dim Email As CDO.Message
Dim Autentificion As Boolean
Dim dests As String
‘Creo el objeto email
Set Email = New CDO.Message
‘CONFIGURAR DATOS DEL SERVIDOR QUE ENVIA MAIL
‘Ponemos datos del servidor a usar
Email.Configuration.Fields(cdoSMTPServer) = «smtp.gmail.com» ‘Gmail
‘Email.Configuration.Fields(cdoSMTPServer) = «smtp.live.com» ‘hotmail
‘Email.Configuration.Fields(cdoSMTPServer) = «out.izymail.com» ‘yahoo
Email.Configuration.Fields(cdoSendUsingMethod) = 2
‘Indicamos el número de puerto smtp
Email.Configuration.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/smtpserverport») = CLng(465) ‘gmail
‘Email.Configuration.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/smtpserverport») = CLng(25) ‘hotmail
‘Email.Configuration.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/smtpserverport») = CLng(25) ‘yahoo
‘Decimos si requiere o no autentificación 1 requiere, 0 no requiere
Email.Configuration.Fields.Item(«http://schemas.microsoft.com/cdo/» & «configuration/smtpauthenticate») = Abs(1)
‘Segundos de espera
Email.Configuration.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout») = 30
‘Definición de verdadero para la autentificación
Autentificacion = True
‘Configuramos el ingreso al mail
If Autentificacion Then
‘nombre de usuario
Email.Configuration.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/sendusername») = «mimail@gmail.com» ‘CONFIGURAR CUENTA QUE ENVIA MAIL
‘password
Email.Configuration.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/sendpassword») = «miclave» ‘CONFIGURAR PASSWORD DE CUENTA QUE ENVIA MAIL
‘si el servidor utiliza SSL (secure socket layer). en gmail: True
Email.Configuration.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/smtpusessl») = True
End If
‘ Una vez configurado nuestro servidor de correo tomados datos de excel para enviar el mail
‘Correo del destinatario
dests = «destinatario@yahoo.es,» & dest1 ‘CONFIGURAR CUENTA DONDE ENVIAR MAIL ej para varios mails «mail1@yahoo.es,mail2@gmail.com»
Email.To = dests
‘Dirección del remitente
Email.From = «mimail@gmail.com» ‘CONFIGUAR CUENTA QUE ENVIA MAIL
‘ Asunto
Email.Subject = «Aviso de Service Programados»
‘ Mensaje
Email.TextBody = msj
‘Actualizamos datos antes del envio
Email.Configuration.Fields.Update
‘Controlo errores
On Error Resume Next
‘enviamos propiamente el mail
Email.Send
‘Si no hay errores la funcion es verdadero
If Err.Number = 0 Then
SendMail_Gmail = True
Else
‘Sale msgbox con descripción del error
MsgBox «Se produjo el siguiente error: » & Err.Description, vbCritical, «Error nro » & Err.Number
End If
‘Borro los objetos
If Not Email Is Nothing Then
Set Email = Nothing
End If
‘Controlo errores
On Error GoTo 0
End Function
Otros post de utilidad:
Ordenar datos automáticamente
Determinar los días laborables entre fecha y fecha
Busca un dato en todas las hojas de excel
Combobox incrustado en Excel
Formulario para insertar datos en hoja de excel
Tutoriales sobre VBA
Llenar combobox y buscar datos
Mensaje de Alerta y envío de mail con Excel
Combobox que lista hojas de excel y las selecciona
.
If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.
Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends