Tengo una macro que envía correos, pero no envía la firma, ¿Cómo adjunto una firma?

Sub SendMail()
Dim strReportName As String
Dim strReportName2 As String
'Declaración de variables
Dim objOutlook As Object
Dim objMail As Object
Dim objOutlookAttach As Object
Dim Dan As String
Dim Rafa As String
P = 2
For F = P To 50
L = Cells(P, 1).Value
M = Cells(P, 5).Value
C = Cells(P, 6).Value
B = Cells(P, 2).Value
'Se declara un objeto de tipo Outlook
Set objOutlook = CreateObject("Outlook.Application")
'Se crea un nuevo mensaje
Set objMail = objOutlook.CreateItem(olMailItem) 'Create a new
Set objOutlookAttach = objOutlook.CreateItem(olAttachMents)
'Se le asignan los valores a las distintas propiedades del objeto "mail"
With objMail
'A quien va dirigido se podría escribir un grupo de usuarios de Outlook
.To = L
.Cc = M
.Subject = B
'Se especifica el asunto.Subject
'Se especifica lo que se quiere que diga el mensaje
.Body = "Hola, tu solicitud fue asignada a" & " " & C
'Se escriben el o los archivos a adjuntar en el mail
'Se manda el mensaje
.Send
End With
'Se cierran todos los objetos utilizados
Set objMail = Nothing
Set objOutlook = Nothing
P = P + 1
Next F
End Sub

1 Respuesta

Respuesta
1

Pues el colocar una firma en Outlook es algo que hace el programa mismo en el momento que escribes un email... pone la firma y te deja escribir sobre ella... y por lo tanto no se puede automatizar al no estar "escribiendo tu el mail en Outlook"

... Pero he visto hay un truco para hacerlo aprovechándose del programa... y mostrando esa ventana de escritura de mails para "insertar" la firma y luego recuperarla hacia tu código

Sub SendMail()
Dim strReportName As String
Dim strReportName2 As String
'Declaración de variables
Dim objOutlook As Object
Dim objMail As Object
Dim objOutlookAttach As Object
Dim Dan As String
Dim Rafa As String

Dim firma as string ' LINEA NUEVA
P = 2
For F = P To 50
L = Cells(P, 1).Value
M = Cells(P, 5).Value
C = Cells(P, 6).Value
B = Cells(P, 2).Value
'Se declara un objeto de tipo Outlook
Set objOutlook = CreateObject("Outlook.Application")
'Se crea un nuevo mensaje
Set objMail = objOutlook.CreateItem(olMailItem) 'Create a new
Set objOutlookAttach = objOutlook.CreateItem(olAttachMents)
'Se le asignan los valores a las distintas propiedades del objeto "mail"

With objMail ' nuevo
.display ' nuevo
End With ' nuevo
firma = objMail.body ' nuevo

With objMail

'A quien va dirigido se podría escribir un grupo de usuarios de Outlook

.To = L
.Cc = M
.Subject = B
'Se especifica el asunto.Subject
'Se especifica lo que se quiere que diga el mensaje

' .Body = "Hola, tu solicitud fue asignada a" & " " & C ' linea que debes reemplazar

.Body = "Hola, tu solicitud fue asignada a" & " " & C & vbNewLine & firma ' linea nueva

'Se escriben el o los archivos a adjuntar en el mail
'Se manda el mensaje
.Send
End With
'Se cierran todos los objetos utilizados
Set objMail = Nothing
Set objOutlook = Nothing
P = P + 1
Next F
End Sub

Al margen de esto no encuentro la logica entre tu FOR

Hola!! Gracias por tu ayuda, ya probé las partes que agregaste al código, efectivamente jala la firma que tu selecciones desde outlook, pero solo jala el texto, la imagen no.

También, después de que se envía el mail, se queda abierto un nuevo correo en outlook el cual no puedo cerrar desde el código. El objetivo de esta macro es enviar un mail al correo que indique A1, con copia al que indique la celda A5, enviar el mensaje y que salga la firma, crees poder ayudarme de favor amigo??

Pienso que podrías probar usando no la propiedad body sino "HTMLBody" en vez de "Body" (yo no la he usado para probar pues en mi Outlook no tengo firma con imagen)... pero en teoría podría resultar... El problema sería... aun si logras recuperar la firma del cuadro de Outlook que luego deberías insertar tu mensaje dentro de ese mensaje y en ese caso, tendrías que insertarlo codificado a HTML y esto creo que NO sería tan simple como concatenar "nuevomensaje" & FIRMAHTMLrecuperada... pues estarías modificando una pagina web no concatenando 2 textos... aun asi podrías probar por que resulta en la variable FIRMAHTMLrecuperada y ver si es posible "agregarle" tu mensaje...

Aquí hay un link con un poco de información sobre objetos y métodos de Outlook desde Excel...

http://msdn.microsoft.com/es-es/library/office/ff861853(v=office.15).aspx

http://www.dicks-clicks.com/excel/olSending.htm

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas