Envie um email, contendo no corpo do mesmo uma tabela, no formato "HTML", com as cotações do plano de saúde atualizadas. O algoritmo deve funcionar independente da versão do Outlook utilizada.
Exercício Resolvido
Resolvendo o Problema
Passo 1 - Primeiramente criaremos uma Function para importar a tabela da planilha na formatação HTML.
-
Iniciamos definindo o tipo de dado de saída da função
Function TaBeLaHTML()as String
-
Declaramos as variáveis
Dim UltColuna As Range
Dim UltLinha As Range
Dim i As Range
Dim j As Range
Dim TabHtml As String
-
A variável TabHtml será uma "String" com o conteúdo da tabela em linguagem HTML. Iremos acrescentando os dados a esta variável a medida que a função for sendo executada, começamos com a tag de abertura da tabela HTML
TabHtml = "<table>"
-
Definimos o intervalo para primeira coluna da tabela
Set UltLinha = Range("A2", Range("A2").End(xlDown))
-
Criamos um loop For Each para cada célula dentro do intervalo
For Each i In UltLinha
-
Criamos uma condicional If para adicionar o estilo caso seja a primeira célula da tabela.
If i = Range("A2") Then
TabHtml = TabHtml & "<tr style=""color:green;font-size:16px;"">"
Else
TabHtml = TabHtml & "<tr>"
End If
-
Definimos o intervalo da linha em função da posição do contador do loop anterior
Set UltColuna = Range(i, i.End(xlToRight))
-
Criamos um segundo loop dentro do primeiro que irá adicionar à variável TabHtml os valores de todas as colunas de uma determinada linha
For Each j In UltColuna
TabHtml = TabHtml & "<td>" & j.Value & "</td>"
Next j
-
Fechamos a tag da linha em linguagem HTML e iniciamos a próxima
TabHtml = TabHtml & "</tr>"
Next i
-
Concluídos os loops, fechamos a tabela e atribuímos o resultado da função à tabela HTML (o retorno TaBeLaHTML)
TabHtml = TabHtml & "</table>"
TaBeLaHTML = TabHtml
Passo 2 - Agora que já temos a tabela formatada e pronta para ser utilizada no email, criamos uma subrotina para o envio.
-
Declaramos as variáveis
Dim OlOut As Object
Dim OlMail As Object
Dim Result As String
-
Definimos a variável OlOut como o OutLook e OlMail como a criação de um email do Outlook
Set OlOut = CreateObject("OutLook.Application")
Set OlMail = OlOut.CreateItem(0)
-
Determinamos o tipo de email, o corpo do texto, o título, o destinatário, e enviamos (note que para o corpo do email chamamos a função que criamos previamente).
With OlMail
.Bodyformat = 2
.Display
.HTMLbody = "<p>Caros,</p>" & "Segue a tabela atualizada com as cotações do plano de saúde por faixa etária.<br><br>" & TaBeLaHTML & .HTMLbody
.Subject = "Email HTML"
'.To = "fulano@gmail.com"
'.Attachments.add "D:\Documents\Cotacao.xlsm"
'.Send
End With
Cuidado: É muito comum enviar emails com erros. Por isso, cheque muito bem seu código antes de colocar o .Send
Código Consolidado
Sub Resolucao()
Dim OlOut As Object
Dim OlMail As Object
Dim Result As String
Set OlOut = CreateObject("OutLook.Application")
Set OlMail = OlOut.CreateItem(0)
With OlMail
.Bodyformat = 2
.Display
.HTMLbody = "<p>Caros,</p>" & "Segue a tabela atualizada com as cotações do plano de saúde por faixa etária.<br><br>" & TaBeLaHTML & .HTMLbody
.Subject = "Email HTML"
'.To = "fulano@gmail.com"
'.Attachments.add "D:\Documents\Cotacao.xlsm"
'.Send
End With
End Sub
Function TaBeLaHTML()
Dim UltColuna As Range
Dim UltLinha As Range
Dim i As Range
Dim j As Range
Dim TabHtml As String
TabHtml = "<table>"
Set UltLinha = Range("A2", Range("A2").End(xlDown))
For Each i In UltLinha
If i = Range("A2") Then
TabHtml = TabHtml & "<tr style=""color:green;font-size:16px;"">"
Else
TabHtml = TabHtml & "<tr>"
End If
Set UltColuna = Range(i, i.End(xlToRight))
For Each j In UltColuna
TabHtml = TabHtml & "<td>" & j.Value & "</td>"
Next j
TabHtml = TabHtml & "</tr>"
Next i
TabHtml = TabHtml & "</table>"
TaBeLaHTML = TabHtml
End Function
SuperExcelVBA.com é um site voltado ao aprendizado de VBA. Exemplos e explicações podem ter sido simplificados para maior e mais veloz compreensão. Estamos constantemente nos atualizando e corrigindo erros, porém não existe garantia sobre o conteúdo disponível no site. Todos os direitos reservados.
Excel ® é uma marca registrada da Microsoft Corporation.
© 2024 SuperExcelVBA | SOBRE