Excel - Incrustar imagen en cuerpo de correo desde excel

   
Vista:

Incrustar imagen en cuerpo de correo desde excel

Publicado por Andrés arkaze@gmail.com (3 intervenciones) el 27/07/2017 17:51:48
Hola estimados!

Les comento que esta es mi primera consulta al foro, sin embargo lo vengo siguiendo desde ya mucho tiempo...

Tengo una macro que me ayuda a enviar correos a distintos destinatarios con archivos adjuntos personalizados (por ejemplo un reporte "x" a la persona "x", y un reporte "y" a la persona "y"), además tengo una imagen incrustada en el correo pero es solo en la firma de éste. El problema que tengo es que necesito -en ocasiones- incrustar una imagen en el cuerpo del mensaje, la cual les llegará a todos, es decir no es una imagen personalizada.

Al intentar hacerlo, simplemente dupliqué el código el cual me inserta la imagen en la firma, en la sección del cuerpo del mensaje, pero se des configuró todo al enviar el correo.

Espero me puedan ayudar, este es mi código actual sin la línea de comando para incrustar la imagen en el cuerpo del mensaje (solo está la de la firma):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
Sub OutlookMailExcelAdjunto()
Dim OutApp As Object
Dim OutMail As Object
Dim para As Range
Dim asunto As Range
Dim cuerpo As Range
Dim archivo As Range
 
 
'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
 
'Se definen el destinatario, la copia y la copia oculta, el asunto
'el cuerpo del correo y los archivos adjuntos si se requiere.Especificando
'los campos usados.
 
 
For i = 2 To Range("h28").Value
 
Set para = Range("b" & i)
Set asunto = Range("c" & i)
Set nombre = Range("d" & i)
Set cont = Range("h2")
Set cont2 = Range("h3")
Set cont3 = Range("h4")
Set cont4 = Range("h5")
Set cont5 = Range("h6")
Set cont6 = Range("h7")
Set cont7 = Range("h8")
Set cont8 = Range("h9")
Set cont9 = Range("h11")
Set firm = Range("h13")
Set firm2 = Range("h14")
Set firm3 = Range("h15")
Set firm4 = Range("h16")
Set firm5 = Range("h17")
Set firm6 = Range("h18")
Set firm7 = Range("h19")
 
Set archivo = Range("a" & i)
Set archivo1 = Range("h22")
Set archivo2 = Range("h23")
 
'On Error Resume Next
Set OutMail = OutApp.CreateItem(0)
'ActiveWorkbook.Save
With OutMail
 
.To = para.Value
 
' CC y CCO
 
If Range("f25").Value = True Then .CC = Range("h25").Value
If Range("f26").Value = True Then .BCC = Range("h26").Value
 
.Subject = asunto.Value
 
' cuerpo del mensaje y la firma
 
.Body = nombre.Value & vbCrLf & vbCrLf & cont.Value & vbCrLf & cont2.Value & vbCrLf & cont3.Value & vbCrLf & cont4.Value & vbCrLf & cont5.Value & vbCrLf & cont6.Value & vbCrLf & cont7.Value & vbCrLf & cont8.Value & vbCrLf & cont9.Value & vbCrLf & vbCrLf & firm.Value & vbCrLf & vbCrLf & firm2.Value & vbCrLf & firm3.Value & vbCrLf & firm4.Value & vbCrLf & firm5.Value & vbCrLf & firm6.Value & vbCrLf & firm7.Value
 
' imagen en la firma
 
.HTMLBody = .HTMLBody & "<img src='D:\Configuraciones y Documentos\arueda\Escritorio\BancoEstado\Banco\Herramientas\Planillas y calculadoras\logo.jpg'>"
 
' archivo adjunto personalizado
.Attachments.Add archivo.Value
 
'archivo adjunto en común
 
If Range("f22").Value = True Then .Attachments.Add archivo1.Value
If Range("f23").Value = True Then .Attachments.Add archivo2.Value
 
.Send
End With
Next i
 
On Error GoTo 0
 
 
Set OutMail = Nothing
Set OutApp = Nothing
End Sub


MUCHAS GRACIAS!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Andres Leonardo

Incrustar imagen en cuerpo de correo desde excel

Publicado por Andres Leonardo (753 intervenciones) el 27/07/2017 20:04:14
Hola me centrare en la parte del codigo dobnde debes cambiar

Como bien dices la firma dependera de que tipo de correo envies ... se me ocurre
1 en los datos del excel tener la firma (ruta de la imagen de la firma) es decir reporte x ,persona x Firma X
2 Qe las tengas predeterminadas en el codigo y segun un CASE del tipo de reporte o codigo de la empresa que estes enviando se actualice la firma
3.- Que la sepas en el codigo y la mandes como parametro a tu macro.

Adjunto donde deberias cambiar
1
2
3
4
5
6
' imagen en la firma
 'Cambias de esto 
.HTMLBody = .HTMLBody & "<img src='D:\Configuraciones y Documentos\arueda\Escritorio\BancoEstado\Banco\Herramientas\Planillas y calculadoras\logo.jpg'>"  ' aqui deberia ir contenido de la imagen que desees adjuntar.
 
'A esto  asi 
.HTMLBody = .HTMLBody & "<img src='" & VariableFirma & "'>"    ' Con eso lo concatenas  y evariable firma va la ruta de tu imagen
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Incrustar imagen en cuerpo de correo desde excel

Publicado por Andrés arkaze@gmail.com (3 intervenciones) el 27/07/2017 21:09:42
Gracias Andrés por tu respuesta, con lo que me indicaste aclaré otra duda que tenía y que no la puse en la consulta que publiqué.

lo que me ocurre, y no se si con lo que me indicas lo pueda solucionarlo, es que necesito que la estructura del correo que voy a enviar sea la siguiente:

Estimada(o) xxxxxx

<Mensaje>

<Imagen> <---- específicamente aquí es donde tengo el problema, ya que no se que línea de código poner para dividir el cuerpo del mensaje (.body) con una imagen

<Mensaje Final>

<Firma>
<imagen firma>

intenté realizarlo de la siguiente forma:

.body = ' cuerpo del mensaje
.htmlbody= ' imagen en medio del cuerpo del mensaje
.body = 'continuación del cuerpo del mensaje y firma

.htmlbody = 'imagen de la firma

Lo que me ocurrió es que los correos se veían desconfigurados, con las dos imágenes una al lado de la otra y no incrustada en medio del mensaje como yo quería.

gracias nuevamente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

[solucionado] Incrustar imagen en cuerpo de correo desde excel

Publicado por Andrés (3 intervenciones) el 27/07/2017 22:57:28
Ya encontré la solución!

Lo que ocurría es que estaba trabajando el formato del correo en HTML y en "no HTML" (no se como se llama el otro formato)

finalmente trabajé el fotmato solo en HTML y se solucionaron mis problemas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
' ..... todo lo anterior...
 
 
cuerpo1 = nombre.Value & "<br>" & "<br>" & cont.Value & "<br>" & cont2.Value _
& "<br>" & cont3.Value & "<br>" & cont4.Value & "<br>" & cont5.Value & "<br>" _
& cont6.Value & "<br>" & cont7.Value & "<br>" & cont8.Value & "<br>"
 
cuerpo2 = cont9.Value
 
firma = firm.Value & "<br>" & "<br>" & firm2.Value & "<br>" & firm3.Value _
& "<br>" & firm4.Value & "<br>" & firm5.Value & "<br>" & firm6.Value & "<br>" & firm7.Value
 
 
'On Error Resume Next
Set OutMail = OutApp.CreateItem(0)
'ActiveWorkbook.Save
With OutMail
.To = para.Value
If Range("f25").Value = True Then .CC = Range("h25").Value
If Range("f26").Value = True Then .BCC = Range("h26").Value
 
.Subject = asunto.Value
 
' incluí un checkbox para los casos en que el correo no requiera imagen
 
If Range("f10").Value = True Then
.HTMLBody = cuerpo1 & "<br>" & "<img src='" & rutaimg & "'>" & cuerpo2 & "<br>" & "<br>" & firma _
& "<br>" & "<img src='" & rutafirma & "'>"
Else
.HTMLBody = cuerpo1 & "<br>" & cuerpo2 & "<br>" & "<br>" & firma _
& "<br>" & "<img src='" & rutafirma & "'>"
End If
 
.Attachments.Add archivo.Value
If Range("f22").Value = True Then .Attachments.Add archivo1.Value
If Range("f23").Value = True Then .Attachments.Add archivo2.Value
 
.Send
End With
Next i
 
On Error GoTo 0
 
 
Set OutMail = Nothing
Set OutApp = Nothing
End Sub

Muchas gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar