Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Editar Corpo do e-mail
Editar Corpo do e-mail
Boa noite.
Tenho um código que gera um novo e-mail completo, com destinatários, cópias, assunto, corpo de texto e anexos.
Porém, gostaria de criar uma nova macro, que fosse possível editar este corpo do e-mail anterior.
Ou seja, preciso manter minha macro anterior, e cria uma nova que possa editar o corpo do e-mail já aberto. É possível?
Tenho um código que gera um novo e-mail completo, com destinatários, cópias, assunto, corpo de texto e anexos.
Porém, gostaria de criar uma nova macro, que fosse possível editar este corpo do e-mail anterior.
Ou seja, preciso manter minha macro anterior, e cria uma nova que possa editar o corpo do e-mail já aberto. É possível?
Re: Editar Corpo do e-mail
Segue abaixo o código utilizado para gerar o e-mail.
OBS: preciso de um outro código para gerar um novo formulário e anexar ao e-mail já aberto pela macro abaixo.
Sub enviarEmail()
Dim intervalo As Range
Dim formulario As ChartObject
Dim objOutlook As Object
assunto = Range("R4")
If Range("J131") > 0 Then
MsgBox "Favor verificar o preenchimento do formulário.", vbCritical
Range("E6").Select
Else
'criar imagem
Set intervalo = Sheets("Formulário").Range("FORMULÁRIO")
intervalo.CopyPicture
Set formulario = Sheets("Formulário").ChartObjects.Add(intervalo.Left, intervalo.Top, intervalo.Width, intervalo.Height)
'criar arquivo na pasta temporária
With formulario
.Activate
.Chart.Paste
.Chart.Export Environ$("temp") & "/formulario.jpg"
.Delete
End With
Calculate
'criar e-mail no outlook
Set objOutlook = CreateObject("Outlook.application").CreateItem(0)
With objOutlook
.display
.To = Range("PARA").Text
.CC = Range("COPIA").Text
.Subject = Range("TEXTO").Text
.Attachments.Add Environ$("temp") & "/formulario.jpg", 1, 0
.HTMLBody = "<br>" & Range("corpo").Text & "<br>Segue formulário.<br> <br>" & _
"<b>Programação, favor seguir conforme formulário abaixo!</b>" & _
"<br><br><img src='cid:formulario.jpg'>" & .HTMLBody
End With
End If
salvar
Set intervalo = Nothing
Set formulario = Nothing
Set objOutlook = Nothing
OBS: preciso de um outro código para gerar um novo formulário e anexar ao e-mail já aberto pela macro abaixo.
Sub enviarEmail()
Dim intervalo As Range
Dim formulario As ChartObject
Dim objOutlook As Object
assunto = Range("R4")
If Range("J131") > 0 Then
MsgBox "Favor verificar o preenchimento do formulário.", vbCritical
Range("E6").Select
Else
'criar imagem
Set intervalo = Sheets("Formulário").Range("FORMULÁRIO")
intervalo.CopyPicture
Set formulario = Sheets("Formulário").ChartObjects.Add(intervalo.Left, intervalo.Top, intervalo.Width, intervalo.Height)
'criar arquivo na pasta temporária
With formulario
.Activate
.Chart.Paste
.Chart.Export Environ$("temp") & "/formulario.jpg"
.Delete
End With
Calculate
'criar e-mail no outlook
Set objOutlook = CreateObject("Outlook.application").CreateItem(0)
With objOutlook
.display
.To = Range("PARA").Text
.CC = Range("COPIA").Text
.Subject = Range("TEXTO").Text
.Attachments.Add Environ$("temp") & "/formulario.jpg", 1, 0
.HTMLBody = "<br>" & Range("corpo").Text & "<br>Segue formulário.<br> <br>" & _
"<b>Programação, favor seguir conforme formulário abaixo!</b>" & _
"<br><br><img src='cid:formulario.jpg'>" & .HTMLBody
End With
End If
salvar
Set intervalo = Nothing
Set formulario = Nothing
Set objOutlook = Nothing
Re: Editar Corpo do e-mail
Colega,
Deixe-me ver se entendi. O código atual cria um email no outlook com destinatários, assunto e corpo, e larga ele aberto no final. O que você quer depois disso, em outra macro, é assumir controle desse email recém criado?
Deixe-me ver se entendi. O código atual cria um email no outlook com destinatários, assunto e corpo, e larga ele aberto no final. O que você quer depois disso, em outra macro, é assumir controle desse email recém criado?
Re: Editar Corpo do e-mail
Celo_cruz,
Ao invés de dar a volta toda, porque não guarda o objOutlook numa variável fora da função? Ela já representa o email criado.
Já tentou isso?
Ao invés de dar a volta toda, porque não guarda o objOutlook numa variável fora da função? Ela já representa o email criado.
Já tentou isso?
Re: Editar Corpo do e-mail
Exemplo:
Já aqui:
Veja se funciona.
Código: Selecionar todos
'Neste exemplo, a variável objOutlook só existem dentro da função enviarEmail()
Sub enviarEmail()
Dim intervalo As Range
Dim formulario As ChartObject
Dim objOutlook As Object
'código...
'criar e-mail no outlook
Set objOutlook = CreateObject("Outlook.application").CreateItem(0)
With objOutlook
'código...
End Sub
'aqui a variável objOutlook não existe
Código: Selecionar todos
'Neste exemplo, a variável objOutlook sendo declarada fora da função, pode ser usada em escopo global
'declarada no topo do módulo como boa prática
'sendo private, ela será visível apenas para as funções deste módulo
Private objOutlook As Object
Sub enviarEmail()
Dim intervalo As Range
Dim formulario As ChartObject
'código...
'criar e-mail no outlook
Set objOutlook = CreateObject("Outlook.application").CreateItem(0)
With objOutlook
'código...
End Sub
'aqui a variável objOutlook existe, podendo ser usada em qualquer outra função:
Sub manusearEmail()
MsgBox objOutlook.Subject
End Sub