Notifications
Clear all

Inserindo imagem no corpo do email coma function RangetoHTML

10 Posts
3 Usuários
0 Reactions
1,682 Visualizações
(@joseborges)
Posts: 10
Active Member
Topic starter
 

Criei uma macro que copia os dados de uma planilha em um determinado intervalo e envia no corpo do email, porém nesse intervalo tem uma imagem que é o logo da empresa. Ao utilizar a Function abaixo que copia os dados e cola no corpo do email, porém a imagem no email aparece com erro ("Não foi possível exibir a imagem").

Alguém pode me ajudar???

Código da function:

Function RangetoHTML(rng As Range)
' Changed by Ron de Bruin 28-Oct-2006
' Working in Office 2000-2010
    Dim fso As Object
    Dim ts As Object
    Dim TempFile As String
    Dim TempWB As Workbook
    
 
    TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
 
    'Copy the range and create a new workbook to past the data in
    rng.Copy
    Set TempWB = Workbooks.Add(1)
    ActiveSheet.Paste
    With TempWB.Sheets(1)
        .Cells(1).PasteSpecial Paste:=8
        .Cells(1).PasteSpecial xlPasteValues, , False, False
        .Cells(1).PasteSpecial xlPasteFormats, , False, False
        .Cells(1).Select
        Application.CutCopyMode = False
        On Error Resume Next
        .DrawingObjects.Visible = True
        ActiveSheet.Shapes.Range(Array("Rounded Rectangle 2")).Delete
        '.DrawingObjects.Delete
        On Error GoTo 0
    End With
 
    'Publish the sheet to a htm file
    With TempWB.PublishObjects.Add( _
         SourceType:=xlSourceRange, _
         Filename:=TempFile, _
         Sheet:=TempWB.Sheets(1).Name, _
         Source:=TempWB.Sheets(1).UsedRange.Address, _
         HtmlType:=xlHtmlStatic)
        .Publish (True)
    End With
 
    'Read all data from the htm file into RangetoHTML
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
    RangetoHTML = ts.ReadAll
    ts.Close
    RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
                          "align=left x:publishsource=")
    'Close TempWB
    TempWB.Close savechanges:=False
 
    'Delete the htm file we used in this function
    Kill TempFile
 
    Set ts = Nothing
    Set fso = Nothing
    Set TempWB = Nothing
End Function
 
Postado : 20/04/2017 10:00 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Vc precisa exportar a imagem e anexá-la no email com position 0 e no meio do código HTML, fazer referência ao anexo...

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 20/04/2017 10:12 am
(@joseborges)
Posts: 10
Active Member
Topic starter
 

Obrigado pela resposta Fernando, porém a imagem ficou fora do local que gostaria no email.

Tentei fazer assim:

 With outmail
        .display
        .To = cc
        .cc = cc2
        .BCC = ""
        .Subject = assunto
        .Attachments.Add anexo
          'Texo que será enviado no corpo do email a linha abaixo:
        .HTMLBody = "<HTML><font size=""3"" face=""Calibri"" Color=""#275dff""><br /><br />" & StrConv(GESTOR, vbProperCase) & ", " & tempo & "!" & "</font>" & _
          "<BODY><P><font size=""3"" face=""Calibri"" Color=""#275dff"">Segue anexo o arquivo atual.</font><br><br> <img src= ""C:UsersxxxxxxxDesktoptestes YQimagem1.jpg""></BODY></HTML>" & RangetoHTML(rng) & .HTMLBody

Será que não é possível fazer com que a function cole a imagem também, eu fiz um teste abrindo o arquivo TempFile e a imagem está lá, ela só não vai para o email. Na vdd até vai só que não exibe.

 
Postado : 20/04/2017 10:26 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

nao vai pro email por causa do endereço físico dela...
Vc fez um HTML e concatenou com outro HTML... vc vai precisar conhecer bem de HTML pra colocar a tag <img> dentro das tags <html></html>...
Entende ?

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 20/04/2017 10:31 am
(@joseborges)
Posts: 10
Active Member
Topic starter
 

Entendi, Fernando uma pena, pois a imagem não ficará no local que gostaria, pois o ideal seria já pegar a imagem que fica na tabela, ou seja, copiar toda aquela região já com a imagem e colar no corpo do email.

 
Postado : 25/04/2017 1:18 pm
(@cmagno)
Posts: 2
New Member
 

Pessoal,

Bom dia.

Estava usando este codigo e ela funcionava perfeitamente, agora troquei de maquina e ele não roda mais.
Estou utilizando agora windows 10 e excel 2016, será que é por isso que não esta mais rodando? alguem tem uma variação desse codigo pra rodar nesta nova situação?

 
Postado : 21/12/2017 9:29 am
(@joseborges)
Posts: 10
Active Member
Topic starter
 

Cmagno,
Aqui no meu trabalho eu já troquei diversas vezes de máquina e de versão de windows e oficce, mas nunca tive esse problema.

 
Postado : 21/12/2017 11:25 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite Cmagno

Nãos sei se é o teu caso, mas se migrou para um sistema 64 bits pode dar problema nas macros sim.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 21/12/2017 4:53 pm
(@cmagno)
Posts: 2
New Member
 

Isso, o novo notebook é 64bits sim.
O que devo fazer se isso for a causa?

 
Postado : 10/01/2018 7:34 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia

Tem que alterar o código VBA.

Temos vários tópicos sobre o assunto, como este aqui:

viewtopic.php?f=10&t=8770

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 11/01/2018 5:42 am