Mediante esta función VBA podemos realizar varias funciones como enviar como archivo adjunto
Podemos realizar nuestro envió a nuestro correo deseado, con solo presionar
una tecla.
ejemplo:
(Para mayor visualización de la imagen, hacer click en la misma)
se crea una conexión con el gestor deseado y se especifica los correos a utilizar pueden ser mediante el Outlook, yahoo, Gmail, Hotmail según como se desee.
se define el destinatario, la copia y la copia oculta, especificando los campos usados.
según ejemplo:
(Para mayor visualización de la imagen, hacer click en la misma)
se coloca un botón para hacer mas rápido del envió del correo.
una forma rápida de enviar nuestros correos sin dificultad
25/03/2014 a las 1:59 pm
Disculpa como le haría para adjuntar todos los archivos de la carpeta de attachments
intenté con *.xlsx al definir la ruta pero no pasa nada
12/03/2015 a las 2:32 pm
Debe ser el nombre exacto y completo por ejemplo:
C:\Users\moises.vasquez\Desktop\GENERACION PDF\AGROINDUSTRIAS LACTEAS LOS QUESOS DE ORIENTE_Lourdes_Jueves_19-03-2015.pdf
26/03/2014 a las 11:55 am
Hola, muy buen aporte, pero tengo una duda, que pasaría si por error escribo mal la ruta o el nombre del archivo y no encuentra el archivo, como puedo hacer para controlar el evento y que no envie el correo si llega a pasar eso
12/03/2015 a las 2:33 pm
Le recomiendo este macro para no fallar en las rutas:
Sub GetFileNames()
Dim xRow As Long
Dim xDirect$, xFname$, InitialFoldr$
InitialFoldr$ = "C:\" '<<< Startup folder to begin searching from
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = Application.DefaultFilePath & "\"
.Title = "Favor seleccione el folde donde están los archivos del autoclave"
.InitialFileName = InitialFoldr$
.Show
If .SelectedItems.Count 0 Then
xDirect$ = .SelectedItems(1) & "\"
xFname$ = Dir(xDirect$, 7)
Do While xFname$ ""
ActiveCell.Offset(xRow) = xDirect$ & xFname$
ActiveCell.Offset(xRow, 1) = xFname$
ActiveCell.Offset(xRow, 2) = FileLen(xDirect$ & xFname$)
xRow = xRow + 1
xFname$ = Dir
Loop
End If
End With
End Sub
01/04/2014 a las 11:06 am
Excelente.... Funciona a la perfección! Maravillosos aporte. Tengo una inquietud: es posible adjuntar 2 o más archivos bajo la misma Macro?
12/03/2015 a las 2:35 pm
puedes hacer un for i deacuerdo a los rutas de archivo digitadas en filas
27/07/2016 a las 8:57 pm
Puedes anexar tantos archivos como quieras, agregando una línea de attachments para cada uno:
.Attachments.Add Range("B6").Value
.Attachments.Add Range("B7").Value
.Attachments.Add Range("B8").Value
...
15/06/2017 a las 9:38 pm
Buena noche,
Perfecto MRivera.
Gracias.
Saludos...
21/02/2018 a las 8:09 pm
Vos lograste que envie mas de un correo seguido, tengo la macro con 3 lineas cada linea es un destinatario, pero cada vez que la corro, solo envia la primera linea la 2 y las 3 no, como hago?
21/04/2014 a las 8:32 am
Cordial saludo,
Ya tengo la estructura y envía perfectamente el correo, mi pregunta es como insertar la firma sin necesidad del ".Display" ya que sería para enviar una cantidad de correos superior a 10 y ese cambio de pantalla es poco eficiente.
Mil gracias por sus aportes.
02/08/2014 a las 6:33 pm
Buenas noches;me parece que es una manera muy práctica de realizar un envío de un archivo, pero una consulta si quiero que el servidos sea Hotmail tendría que ser asi:
Set OutApp = CreateObject("Hotmail.Application")
Lo intente pero no me salio...
agradezco su ayuda,
07/08/2014 a las 10:40 am
Excelente!!! Muchas gracias
14/08/2014 a las 7:11 pm
que tal como esta saludos solo quisiera saber como le envío un video sobre un libro que preparé en excel y como realiza ud. esos videos
17/08/2014 a las 11:15 am
Estimado jesus ac
Gracias por su mensaje, cuando desee compartir archivos de gran tamaño puede hacer uso de servicios como Dropbox, y solo distribuye la ruta a quienes desee compartir el archivo.
Si lo que desea es compartir el video de forma pública puede hacer uso de youtube para ello, un consejo al respecto, revíselo con algún amigo cercano que conozca poco sobre el tema, si él llega a comprender el tema y le agrada entonces sabrá que ya es momento de subirlo a youtube.
Hay varias herramientas para la creación de videos, no somos especialistas en ello, pero le podemos recomendar que si ya conoce una la aproveche al máximo antes de probar otra, y al probar la siguiente, hágalo sin ningún apasionamiento sobre la primera.
10/10/2014 a las 12:40 pm
Fernando: muy útil su macro.
Una pregunta: ¿cómo adjuntar 2 o más archivos?
Gracias y saludos.
15/10/2014 a las 1:35 pm
Esto es el ejemplo para mandar por Outlook que todos los pc's traen instalado por defecto (programa), pero como se envía por Internet mediante un servidor de correos (como Gmail)??? Gracias de antemano
03/11/2014 a las 8:21 pm
Es posible usar una plantilla de correo para el envío, ademas es posible implementar esta macro para enviar varios archivos pero que cumpla las mismas características de esta primera macro?
Gracias por tu ayuda.
03/12/2014 a las 7:39 am
Buenas.
No encuentro información para lo que yo necesito.
Tengo un libro excel (2013) con 93 hojas, cada una diferente y personal para cada persona y quiero enviar por correo electrónico cada hoja a su destinatario.
¿Cómo?
Muchas gracias de antemano.
Un saludo
03/03/2016 a las 7:19 pm
Primero necesitas separar las hojas en archivos.
21/01/2015 a las 9:33 am
nesecito enviar el documento adjunto pero con lotus notes
08/04/2015 a las 2:34 pm
como se puede hacer para el comando de cuerpo tenga mas de un rango?
donde dice
.Body = Range("B8").Value
Como puedo para hacer que tenga mas de un Range??
e intentado de varias formas pero lo que el correo hace es borrarme la informacion del primer rango.
Me ayudan...
24/05/2015 a las 7:23 am
Hola Luis!! En mi caso lo he resulto colocando todo el texto en la misma celda y generando nuevos renglones presionando alto+entre .espero te sirva.saludos☺
19/05/2015 a las 4:24 pm
Hola Moises. Lo felicito por su brevedad y exactitud, corto y conciso. Me gustaria aclarar una inuietud. Ya teniendo el ATTACHMENTS que Ud describe, como puedo cambiar para el archivo adjunto a este email para enviar sea la hoja actual y que lo envie como PDF con un nombre que le de por medio de una Cell. Gracias.
22/05/2015 a las 4:48 pm
Hola buenas noches,
Tengo una plantilla de Word y me gustaría saber si es posible mediante una macros enviar ese archivo word a traves de MICROSOFT OFFICE OUTLOOK a un correo.
Muchas gracias
me urge bastante
03/06/2015 a las 10:21 am
Buen dia, disculpen alguien me podra apoyar con alguna macro o alguna plantilla de este tipo... resulta que desempeño en el area de cuentas por pagar y necesito enviar de un listado que tengo en excel de "n" proveedores y "n" cantidad de facturas y que las facturas que le pague a la empresa "XY" se le envie la informacion sobre las facturas que le estoy pagando...
Alguien tendra algun aporte?, gracias de antemano!
Saludos!
07/06/2015 a las 7:29 pm
Alguien que me ayude con ejemplo para adjuntar más de un archivo, gracias.
12/06/2015 a las 5:03 pm
Como se hace para que el el cuerpo del correo se mande un rango de celdas
27/07/2016 a las 8:43 pm
Yo lo resolví con esto:
.Body = Range("i1").Value & Range("i2").Value & ....
17/02/2017 a las 1:35 pm
DoEvents
Application.SendKeys “^v”
DoEvents
27/07/2015 a las 3:31 pm
Quiero mandar un correo de aviso, cuando una celda, rebase un numero determinado:
Ejemplo:
Si la celda A1 su valor es mayor de 40, enviar un correo que diga
"ALERTA SE REBASARON LAS 40 HORAS"
03/09/2015 a las 11:25 am
buenas tardes chicos,
queria preguntar sobre un error que me esta sucediento en un documento que tengo para enviar correos desde excel, les explico, los campos para a quien va dirigido, la copia el asunto y el adjunto corren bien en la macro el correo se envia bien, solo el problema esta en el cuerpo del mensaje debido a que si en el campo seleciono una sola celda si se anexa al correo ej.:
CÓDIGO:
.Body = Range("B8").Value
pero cuando seleciono varias celdas del rango se envia el cuerpo del mensaje en blanco ej.:
CÓDIGO:
.Body = Range("B8:C25").Value
anexo los codigos completos
con una sola celda:
CÓDIGO:
Sub OutlookMailExcelAdjunto()
Dim OutApp As Object
Dim OutMail As Object
'Se crea la conexión con el gestor de correo
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.logon
'Se crea metodo de envio de correo
Set OutMail = OutApp.CreateItem(0)
ActiveWorkbook.Save
'Se definen el destinatario, la copia y la copia oculta, el asunto
On Error Resume Next
With OutMail
.To = Range("B4").Value
.CC = Range("B5").Value
.BCC = Range("B6").Value
'el cuerpo del correo y los archivos adjuntos si se requiere.Especificando
'los campos usados.
.Subject = Range("B7").Value
.Body = Range("B8").Value
.Attachments.Add Range("B26").Value
.Send
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
con mas de una celda:
CÓDIGO:
Sub OutlookMailExcelAdjunto()
Dim OutApp As Object
Dim OutMail As Object
'Se crea la conexión con el gestor de correo
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.logon
'Se crea metodo de envio de correo
Set OutMail = OutApp.CreateItem(0)
ActiveWorkbook.Save
'Se definen el destinatario, la copia y la copia oculta, el asunto
On Error Resume Next
With OutMail
.To = Range("B4").Value
.CC = Range("B5").Value
.BCC = Range("B6").Value
'el cuerpo del correo y los archivos adjuntos si se requiere.Especificando
'los campos usados.
.Subject = Range("B7").Value
.Body = Range("B8:C25").Value
.Attachments.Add Range("B26").Value
.Send
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
03/03/2016 a las 7:21 pm
Concatena todo en una sola celda y después en el cuerpo del mensaje solo haz referencia a esa celda
27/07/2016 a las 8:45 pm
O concatena las celdas en el mismo body:
.Body = Range("i1").Value & Range("i2").Value & ...
15/02/2017 a las 1:12 pm
Es mas sencillo si seleccionas los rangos que quieres, das copiar, y después de la linea de attachments, en lugar de poner .send, pones .display, después de esa linea pon estas:
DoEvents
Application.SendKeys "^v"
DoEvents
y esa linea pegara lo que tienes seleccionado para copiar
20/10/2015 a las 2:34 pm
Hola, excelente codigo me sirvió perfectamente solamente tengo una pregunta como agrego firma al correo electronica con imgaenes de la empresa? Es decir, la firma que esta adjunta a un correo desde el outlook
Mil gracias ojala pudieras contestarme y sea afortunada. GRACIAS
16/11/2015 a las 9:24 am
me dice no se encuentra la ruta del archivo, he verificado y la ruta esta correcta, gracias
05/02/2016 a las 12:30 pm
Hola, excelente la página. Funciona de forma perfecta el código. Solamente quisiera saber si hay alguna forma de que envíe el mail sin oprimir "Enviar" en Outlook. Lo que hace ahora es prepararlo y quedar esperando que oprima Enviar... Gracias.
12/02/2016 a las 3:38 pm
Si alguien le sirve para poder enviar 2 archivos lo único que agregue a la macro fue lo siguiente:
.Attachments.Add Range("B9").Value
.Attachments.Add Range("B10").Value
de esta forma coloco las rutas en esas 2 celdas y así pude adjuntar 2 archivos.
02/04/2016 a las 4:09 pm
Hola
Espero puedan ayudarme con lo siguiente:
Tengo un archivo de Excel en mi pagina, es un formato sencillo para registrarse a un evento. Lo que quiero es, que los usuarios lo descarguen, llenen, presionen un botón de enviar y automáticamente se adjunte a un correo electrónico y se pueda enviar.
Gracias de antemano. un saludo.
16/11/2016 a las 10:51 am
La macro funciona correctamente, pero solamente cuando tengo abierto el outlook. Como puedo hacer para que se envié la información con el outlook cerrado?
08/02/2017 a las 3:08 pm
hola que tal quisiera saber si podrían ayudarme en la realización de una macro para mandar correos en os días de cumpleaños de los trabajadores de una empresa, pero lo que quiero es que se envíen en el dia y mes correcto y con el nombre del trabajador a su correo
espero puedan ayudarme
13/02/2017 a las 3:25 pm
hola, quisiera saber como hago para enviar un mail a varios destinatarios los cuales los tengo en un rango en el libro que tengo abierto
Workbooks("valoracion-43").Activate
'se envia a los correos correspondientes
para =
cc = correo.Range("cc").Value
Subject = "Control de valoración a corte " & dia & " de " & mess & " del " & año & "."
body = "Adjuntamos el resultado de las inconsistencias evidenciadas en el control de valoración al corte " & dia & " de " & mess & " del " & año & "."
Set olApp = CreateObject("Outlook.Application")
Set olMail = olApp.CreateItem(0)
With olMail
.to = Range("para").Value
.cc = Range("cc").Value
.Subject = Subject
.DISPLAY
FIRMA = olMail.HTMLbody
.HTMLbody = "Buen día," & body & FIRMA & ""
.Attachments.Add "G:\RIESGOS\SARM\Control de Valoración" & "\" & año & "\" & mes & "\" & dia & "\" & "Control.pdf"
End With
15/02/2017 a las 1:15 pm
Tienes que separar por ; como lo haces en outlook, por decir:
.to = Range(“A1”).Value & ";" & Range(“A2”).Value
y así sucesivamente
25/09/2017 a las 4:03 pm
Amigos buenos días.
Necesito una ayuda, elaboré una macro que me permite enviar correos masivos dependiendo del comportamiento de una celda, me funciona muy bien, pero si un destinatario se repite, envía tantos correos como celdas cumplan con la condición y lo que requiero yo es que se envíe un solo correo por destinatario con tantas filas se repitan, por ejemplo,
Fila 1 = 10101 Perro AA@xxx.com
Fila 2 = 10102 Gato AA@xxx.com
Fila 3 = 10111 Pollo AA@xxx.com
Fila 4 = 10108 Pez BBBBB@xxx.com
Fila 5 = 10105 Ave BBBBB@xxx.com
Es decir que sean dos correos nada más.
AA@xxx.com
Fila 1 = 10101 Perro
Fila 2 = 10102 Gato
Fila 3 = 10111 Pollo
BBBBB@xxx.com
Fila 4 = 10108 Pez
Fila 5 = 10105 Ave
De ante mano muchas gracias por la ayuda que me puedan prestar.
Saludos desde Venezuela.
William Solorzano
16/02/2017 a las 1:49 pm
como puedo hacer para enviarlo desde una cuenta gmail hacia una cuenta gmail sin utilizar outlook solo gmail
04/04/2017 a las 1:00 pm
Estimados, les consulto, he estado usando este código sin problema. Ahora me sale un error -2147467259 en tiempo de ejecución. Necesitamos saber a quien enviar esto, asegurese de introducir a menos un nombre".....ahora bien, yo tengo introducidos nombres y de hecho el correo cuando lo pruebo llega pero sale ese error y me deja la macro suspendida....Agradezco si alguien me puede ayudar a descubrir que está pasando. Marina
Sub EnviarEmail()
'
' Declaramos variables
'
Dim OutlookApp As Outlook.Application
Dim MItem As Outlook.MailItem
Dim cell As Range
Dim Asunto As String
Dim Correo As String
Dim Destinatario As String
Dim Saldo As String
Dim Msg As String
'
Set OutlookApp = New Outlook.Application
'
'Recorremos la columna EMAIL
'
For Each cell In Range("B11:B118")
'
'Asignamos valor a las variables
'
Asunto = "Feedbak"
Destinatario = cell.Offset(0, -1).Value
Correo = cell.Value
Saldo = Format(cell.Offset(0, 1).Value, "0.0%")
Variacion = Format(cell.Offset(0, 2).Value, "0.0%")
ADJUNTO = "C:\Users\......docx"
'Cuerpo del mensaje
'
Msg = "Estimado ....."
'
Msg = Msg & "Sin otro particular y a la espera de seguir contando con su participación, saludamos muy atentamente." & vbNewLine & vbNewLine
'
' "
' Msg = Msg & "a fin de relevar los datos para el mes entrante. Atentamente." & vbNewLine
Msg = Msg & " Dpto. Estadísticas"
'
Set MItem = OutlookApp.CreateItem(olMailItem)
With MItem
.To = Correo
'.cc = Range("E5")
.Subject = Asunto
.body = Msg
' .Attachments.Add Range("A4").Value
.Attachments.Add (ADJUNTO)
.send
'Body = Range(“i1”).Value & Range(“i2”).Value &...para varios mjes
End With
'
Next
'
End Sub
22/05/2017 a las 1:51 pm
Logro enviar correos, pero cuando quiero agregar un archivo me envía el siguiente error
"Se ha producido el error '-2147024893 (80070003)' en tiempo de ejecución: Error de Automatización"
.Attachments.Add Range("l3").Value
15/06/2017 a las 9:40 pm
Muchas gracias me sirvió mucho tu información.
Saludos.
24/07/2017 a las 4:12 pm
hola, por favor me pueden ayudar necesito un código para enviar un correo electrónico usando web mail no Outlook
mil gracias por sus aportes me han servido un monto
29/07/2017 a las 3:43 pm
hola como puedo har para que se vea una imagen en el cuerpo del correo
07/08/2017 a las 12:48 pm
Si se quiere ocultar el emisor, como se debería hacer? que no aparezca nada o en su defecto un NOREPLY. Sldos y gracias
11/12/2018 a las 2:14 pm
Buenas tardes. el codigo me funciono correctamente el dia de ayer, hoy al realizar algunas adecuaciones al archivo para complementar y que ya quede lista la plantilla volvi a ejecutar la macro para realizar pruebas me muestra el mensaje enviado con exito pero en realidad no salen los mensajes. Que puede pasar.
Sub correo()
Dim outApp As Object
Dim outmail As Object
Set outApp = CreateObject("Outlook.Application")
outApp.Session.logon
Set outmail = outApp.createitem(0)
ActiveWorkbook.Save
On Error Resume Next
With outmail
.to = Range("B10").Value
.CC = Range("B11").Value
.Subject = Range("B12").Value
.Body = Range("B13").Value
.Attachments.Add Range("B14").Value
.DeleteAfterSubmit = False
.send
End With
MsgBox "Reporte Enviado con Éxito"
On Error GoTo 0
Set outmail = Nothing
Set outApp = Nothing
End Sub
09/05/2019 a las 1:27 pm
Hola a todos, Por favor su ayuda, tengo un archivo excel donde tengo que enviar por correo la información de un rango de celdas y a su vez enviar un un archivo adjunto, como se podría hacer para poder hacer las 2 cosas a la vez.
29/07/2019 a las 9:42 am
Buenas tardes,
El código me funciono perfectamente hasta ayer que cambie de versión de Excel, ahora estoy utilizando Excel 2013 y me da el siguiente error:
"Se ha producido el error 2146959355 (80080005) en tiempo de ejecución: Error en la ejecución de servidor"
Deja de correr en :
' Se crea la conexión con el gestor de correo
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Tengo habilitado en herramientas, referencias:
- Microsoft Excel 15.0 Object Library
- Microsoft Outlokk 15.0 Object Library
¿Alguien podría ayudarme?
Muchas gracias.
Saludos,
24/09/2019 a las 2:46 pm
Buen día.
si quisiera enviar 10 correos con 2 archivos adjuntos en cada correo, que le tengo que cambiar a la macro?
me podrías apoyar?
07/02/2020 a las 2:34 pm
Excelente día!
el archivo funciona perfecto, quisiera saber si aparte del adjunto se puede agregar un rango de celdas.
03/05/2020 a las 4:27 pm
Muchas gracias. ?Como puedo iniciar sesion?
07/04/2020 a las 10:22 pm
Buenas noches: podría ayudarme en guardar datos de textbox y a la vez datos de un listbox a la base de access, esta el el userform FORMULARIO,
21/04/2020 a las 11:17 am
No funciona en Gmail, me puedes decir como puedo hacer
05/06/2020 a las 9:12 pm
buenas noches, como es para que arroje un error si es que no encuntra el archivo adjunto y el mail no lo envie vacio??
probe el que escribieron al inicio pero me da error. Alguien sabra? gracias!!!