Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Editar Corpo do e-mail

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Celo_cruz
Acabou de chegar
Acabou de chegar
Mensagens: 7
Registrado em: Qua Jul 01, 2020 2:55 pm

Editar Corpo do e-mail

Mensagem por Celo_cruz »

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?


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Editar Corpo do e-mail

Mensagem por webmaster »

A resposta de sempre: depende. Pode postar a macro aqui?


Celo_cruz
Acabou de chegar
Acabou de chegar
Mensagens: 7
Registrado em: Qua Jul 01, 2020 2:55 pm

Re: Editar Corpo do e-mail

Mensagem por Celo_cruz »

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


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Editar Corpo do e-mail

Mensagem por webmaster »

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?


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Celo_cruz
Acabou de chegar
Acabou de chegar
Mensagens: 7
Registrado em: Qua Jul 01, 2020 2:55 pm

Re: Editar Corpo do e-mail

Mensagem por Celo_cruz »

Exatamente isso!!


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Editar Corpo do e-mail

Mensagem por webmaster »

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?


Celo_cruz
Acabou de chegar
Acabou de chegar
Mensagens: 7
Registrado em: Qua Jul 01, 2020 2:55 pm

Re: Editar Corpo do e-mail

Mensagem por Celo_cruz »

Como eu poderia fazer dessa forma?
Não consegui entender muito bem.


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Editar Corpo do e-mail

Mensagem por webmaster »

Exemplo:

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
Já aqui:

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
Veja se funciona.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder