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

Enviar range no corpo do email como imagem [RESOLVIDO]

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Avatar do usuário
Fabio Trindade
Manda bem
Manda bem
Mensagens: 161
Registrado em: Dom Abr 24, 2011 4:07 pm

Enviar range no corpo do email como imagem [RESOLVIDO]

Mensagem por Fabio Trindade »

Boa tarde, Srs.

Procurei alguns exemplos de como selecionar algumas uma range e mandar no corpo do e-mail como imagem, mas não encontrei algo que chegasse perto da minha duvida, encontrei em outro fórum como exportar a range como imagem, mas não atende como solução pra meu caso.

Gostaria de saber dos senhores, se poderiam me orientar de como realizar tal fato, ou indicar lugares que eu possa ver algum código parecido para adaptar.

Desde já, agradeço ... Toda e qualquer ajuda sempre é bem vinda
Editado pela última vez por Fabio Trindade em Qui Set 11, 2014 6:09 pm, em um total de 1 vez.


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
Fabio Trindade
Manda bem
Manda bem
Mensagens: 161
Registrado em: Dom Abr 24, 2011 4:07 pm

Re: Enviar range no corpo do email como imagem

Mensagem por Fabio Trindade »

Fabio Trindade escreveu:Boa tarde, Srs.

Procurei alguns exemplos de como selecionar algumas uma range e mandar no corpo do e-mail como imagem, mas não encontrei algo que chegasse perto da minha duvida, encontrei em outro fórum como exportar a range como imagem, mas não atende como solução pra meu caso.

Gostaria de saber dos senhores, se poderiam me orientar de como realizar tal fato, ou indicar lugares que eu possa ver algum código parecido para adaptar.

Desde já, agradeço ... Toda e qualquer ajuda sempre é bem vinda
Bom dia, Srs.

procurei algum código que atende-se minha necessidade o que consegui encontrar é um que faz um print da tela toda e insere no corpo do e-mail e como anexo também.
Porém não sei como manipular o mesmo para fazer o print só das células que preciso, gostaria da ajuda dos senhores para tentar montar alguma coisa parecida.

Segue o código que encontrei:
Créditos : http://answers.microsoft.com/pt-br/offi ... bb7f089aca

Código: Selecionar todos

Sub Email()


    Dim cob As Excel.ChartObject
    Dim wks As Excel.Worksheet
    Dim shp As Excel.Shape
    Dim cht As Excel.Chart
    Dim objOutlook As Object 'Outlook.Application
    Dim objMailItem As Object 'Outlook.MailItem
    Dim strImagePath As String
    
    strImagePath = Environ("Save") & "f:\Users\fabio.trindade\Desktop\Print\print.png" 'Local onde vai ser salvo
    
    'Application.Range("A1:O15")
    Application.SendKeys "(%{1068})" ' Comando que executa o AltPrintScreen
    DoEvents
    Application.Wait Now + TimeSerial(0, 0, 1)
    
    Application.ScreenUpdating = False
      
        Set wks = Workbooks.Add(xlWBATWorksheet).Worksheets(1)
        wks.Paste
        Set shp = wks.Shapes(1)
        Set cht = wks.ChartObjects.Add(0, 0, shp.Width, shp.Height).Chart
        cht.Paste
        cht.Export strImagePath, "png"
        wks.Parent.Close savechanges:=False
    
    Application.ScreenUpdating = True
    
    Set OutApp = CreateObject("Outlook.Application")
    
    OutApp.Session.Logon
    
    Set OutMail = OutApp.CreateItem(0)
    
    On Error Resume Next
    
    With OutMail
       .To = ""
       .cc = ""
       .BCC = ""
       .Subject = "Titulo"
       .Attachments.Add "f:\Users\fabio.trindade\Desktop\Print\print.png"
    
       
       .HTMLBody = "Mensagem" & "<BR><BR>" & _
       "<img src='f:\Users\fabio.trindade\Desktop\Print\print.png'>" 'Caminho que se encontra a imagem a ser colada no corpo do e-mail.
       '.Send 'or use
       .Display
    End With

    Set OutMail = Nothing
    Set OutApp = Nothing

End Sub


Avatar do usuário
Rafael Monteiro
Consultor
Consultor
Mensagens: 277
Registrado em: Seg Nov 28, 2011 8:27 am
Localização: Sorocaba - SP
Contato:

Re: Enviar range no corpo do email como imagem

Mensagem por Rafael Monteiro »

Fabio,

Se você tentar integrar um código que imprimi apenas a células selecionadas, talvez de certo.

Código: Selecionar todos

    Range("A1: C4").Select
    Selection.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
Só uma idéia, talvez ajude.
Abs.


Avatar do usuário
Fabio Trindade
Manda bem
Manda bem
Mensagens: 161
Registrado em: Dom Abr 24, 2011 4:07 pm

Re: Enviar range no corpo do email como imagem

Mensagem por Fabio Trindade »

Rafael Monteiro escreveu:Fabio,

Se você tentar integrar um código que imprimi apenas a células selecionadas, talvez de certo.

Código: Selecionar todos

    Range("A1: C4").Select
    Selection.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
Só uma idéia, talvez ajude.
Abs.
Bom dia, Rafael Monteiro.

Obrigado pela dica.


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
Fabio Trindade
Manda bem
Manda bem
Mensagens: 161
Registrado em: Dom Abr 24, 2011 4:07 pm

Re: Enviar range no corpo do email como imagem [RESOLVIDO]

Mensagem por Fabio Trindade »

Bom dia, Srs.

Depois de pesquisar um pouco e destruir alguns arquivos consegui fazer uma POG (Programação Orientada a Gambiarra), que atende-se minha necessidade.

Encontrei um código aqui no fórum que exporta como imagem uma parte selecionada da planilha ativa, fiz com que essa imagem seja salva na pasta %temp% e depois recupero dentro do outlook como imagem no corpo do meio, após enviado, mando um kill no arquivo dentro da pasta %temp% e pronto.

Créditos : viewtopic.php?f=20&t=1156#.VA2w2fldVUX
teste.rar
Image no corpo do e-mail
(19.39 KiB) Baixado 1913 vezes


NoobGui
Colaborador
Colaborador
Mensagens: 15
Registrado em: Qui Jan 14, 2016 1:28 pm

Re: Enviar range no corpo do email como imagem [RESOLVIDO]

Mensagem por NoobGui »

A imagem vai bem distorcida devido ao tamanho, existe uma forma de "Auto dimensionar" pelo tamanho da seleção?


Rafael Magno
Acabou de chegar
Acabou de chegar
Mensagens: 1
Registrado em: Sáb Out 12, 2019 7:44 pm

Re: Enviar range no corpo do email como imagem [RESOLVIDO]

Mensagem por Rafael Magno »

Prezados, boa noite.
tambem estou com uma divida igual preciso printar a tela e inserir no corpo do email tudo em codigo vba
a parte do print foi facil com sendkeys porem inserir a imagem printada no corpo do email em codigo nao consegui ainda
poderiam me ajudar??
segue o codigo que fiz ate o momento:

'*****************************Email************************

Set myolapp = CreateObject("Outlook.Application")
Set myitem = myolapp.CreateItem(olMailItem)
Set ObjNetwork = CreateObject("WScript.Network")
Dim TEXTO
Dim ASSUNTO As String

Workbooks.Application.DisplayAlerts = False
dia = Day(Now)
mes = Month(Now)
ano = Year(Now)

'cumprimentos
If Time() < "12:00:00" Then
Ola = "Bom dia,"

ElseIf Time() < "18:00:00" Then
Ola = "Boa tarde,"

Else
Ola = "Boa noite,"
End If

ASSUNTO = "REMESSA " & Plan1.Range("C7").Value & Space(2) & Plan4.Cells(LINHA, 1).Value

'Segue remessa CALMAG: 114725800
'Ordem de venda: 4934492
'Placa do veículo: HIM-3621

TEXTO = Ola & vbCrLf & vbCrLf & "Segue remessa" & ":" & Space(2) & Plan4.Cells(LINHA, 1).Value & vbCrLf & _
"Ordem de venda" & ":" & Space(2) & Plan1.Range("E7").Value & vbCrLf & _
"Placa do veiculo" & ":" & Space(2) & Plan1.Range("F7").Value

With myitem
.To = Plan2.Range("D2").Value & ";" & _
Plan2.Range("A2").Value & ";" & _
Plan2.Range("A3").Value & ";" & _
Plan2.Range("A4").Value & ";" & _
Plan2.Range("A5").Value & ";" & _
Plan2.Range("A6").Value & ";" & _
Plan2.Range("A7").Value & ";" & _
Plan2.Range("A8").Value & ";" & _
Plan2.Range("A9").Value & ";" & _
Plan2.Range("A10").Value & ";" & _
Plan2.Range("A11").Value & ";" & _
Plan2.Range("A12").Value & ";"

.Subject = ASSUNTO
.Body = TEXTO
.BodyFormat = 1

.Save
.send

End With
Plan4.Protect "UFD"

Plan1.Activate
Plan1.Range("F7").ClearContents
Plan1.Range("G7").ClearContents


MsgBox "Remessa criada e e-mail enviado", vbInformation, "Notificação"
End If
End Sub


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