Notifications
Clear all

VBA print no corpo do email e anexo do arquivo

5 Posts
2 Usuários
0 Reactions
2,379 Visualizações
(@grbaiao)
Posts: 0
New Member
Topic starter
 

Bom dia,

Me indicaram este fórum pois venho buscando uma solução para uma necessidade minha:

Preciso encontrar um código VBA que faça o print de uma seleção de células de uma planilha qualquer e cole no corpo do email (outlook), e ao mesmo tempo faça o anexo do arquivo.

Eu tenho o código dos dois separados porém não consigo fazer a integração dos DOIS códigos.

CÓDIGO 1: ENVIA PLANILHA EM ANEXO

Sub ArquivoAnexo()
'No exemplo abaixo, ele efetua o envio da ultima versão salva da planilha
    Dim OutApp As Object
    Dim OutMail As Object
'Nesse trecho de código, instanciamos um objeto referente ao outlook, como pré-requisito, devemos ter uma conta valida associada para que o exemplo funcione. Possivelmente temos de ter tambem acesso de administrador, para executar a chamada para outra aplicação
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    On Error Resume Next
    With OutMail

       'Campo de destinatario
 .To = "contato@contato.com"
       'Com cópia
 .CC = ""
       'Cópia oculta
 .BCC = ""
        .Subject = "Informe Diário"
        .Body = "Informe Diário"

        .Attachments.Add ActiveWorkbook.FullName
        .Display
    End With
    On Error GoTo 0

    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub

CÓDIGO 2: TIRA PRINT E COLA NO CORPO DO EMAIL

Sub EnviarEmail()

'No exemplo abaixo, ele efetua o envio da ultima versão salva da planilha
    Dim OutApp As Object
    Dim OutMail As Object

Plan1.Select

  ' Seleciona o intervalo de células a serem enviadas por email.
 
   ActiveSheet.Range("A1:D5").Select
      
   ActiveWorkbook.EnvelopeVisible = True
   
   With ActiveSheet.MailEnvelope
   
        .Item.Subject = ""
        .Introduction = ""
    .Item.To = "contato@contato.com"
       

    End With
    
End Sub

Obrigado!

Gabriel.

 
Postado : 31/01/2017 8:38 am
(@walter29)
Posts: 0
New Member
 

Olá amigo, bom dia!

Acredito que seja isso que você precisa, da uma olhada no arquivo e no código abaixo.


Option Explicit

Dim lSalvar As String

Sub ArquivoAnexo()

Dim OutApp As Object
Dim OutMail As Object
Dim strBody As String

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

On Error Resume Next

Call lCriarImagem

strBody = "<body> <h2>Informe Diário</h2> <img src=""""" & lSalvar & """ style=""width:304px;height:228px""></body>"

With OutMail

.Display
.To = "ew-comercial@outlook.com"
.Subject = "Informe Diário"
.Attachments.Add ActiveWorkbook.FullName
.HTMLBody = strBody
.Send

End With

MsgBox "Arquivo enviado com sucesso!", vbInformation

On Error GoTo 0

Set OutMail = Nothing
Set OutApp = Nothing

End Sub


' Planilhando Dúvida: http://www.planilhando.com.br/forum/viewtopic.php?f=10&t=23401
' Material de apoio: https://www.mrexcel.com/forum/excel-questions/821611-trying-insert-picture-imagine-into-email-via-visual-basic-applications.html

Private Sub lCriarImagem()

Dim lCopia As Range
Dim lImagem As ChartObject


Set lCopia = Worksheets("Plan1").Range("A1:D5")

lCopia.CopyPicture Appearance:=xlScreen, Format:=xlBitmap

lSalvar = Environ("Temp") & "TempExportChart.png"

Set lImagem = lCopia.Parent.ChartObjects.Add(Left:=lCopia.Left, Top:=lCopia.Top, Width:=lCopia.Width, Height:=lCopia.Height)
    
    With lImagem
        .Chart.Paste
        .Chart.Export lSalvar
        .Delete
    End With
    
End Sub

Abraço! :ugeek: :geek: :mrgreen: :arrow:

 
Postado : 31/01/2017 11:51 pm
(@grbaiao)
Posts: 0
New Member
Topic starter
 

amigao, muito obrigado pela sua ajuda.

mas ainda to tendo dificuldades para selecionar as celulas desejadas antes de colar no email

tentei mudar aqui:

Set lCopia = Worksheets("Plan1").Range("A1:D5")

mas nao funcionou

 
Postado : 01/02/2017 11:43 am
(@walter29)
Posts: 0
New Member
 

grbaiao

Amigo,

Quais células irá ter a informação que você precisa?

Abraço!

 
Postado : 01/02/2017 1:54 pm
(@grbaiao)
Posts: 0
New Member
Topic starter
 

entao amigo,

não seria pra uma planilha específica, seria pra usar em praticamente todas as planilhas do meu cotidiano.
por isso eu queria aprender como eu altero as células desejadas.

vou dar um exemplo:

em anexo segue uma planilha com os um codigo em cada aba
se copiar qualquer um dos codigos, separadamente, no vba da aba " controle" (plan1) funciona

na aba "controle" tem 1 tabela, mas no caso de colocar 10 tabelas e precisar alterar as celulas selecionadas

obrigado!

 
Postado : 06/02/2017 1:25 pm