Notifications
Clear all

Enviar Email a partir de um código VBA do Excel

3 Posts
3 Usuários
0 Reactions
1,087 Visualizações
(@kb2813)
Posts: 1
New Member
Topic starter
 

Pessoal,

Fiz uma pesquisa e testei esse código para enviar uma email a partir de um código em VBA no Excel. Na parte onde o código vai copiar uma range da planilha no corpo do email, é exibida a mensagem de "Tipos incompatíveis". Alguém poderia dar uma dica da causa do erro e o que fazer para resolver? Obrigado.

Versão do Excel = 2013.

 Sub Enviar_email_teste1()
 Dim ConteudoCorpoEmail As Range
 Dim enderecos As Range
 Dim celula As Range
 Dim anexo As String
 Dim r As Integer
 Dim fim
 Dim enviar
 Dim objOlAppApp As Outlook.Application
 Dim objOlAppMsg As Outlook.MailItem
 Dim objOlAppRecip As Outlook.Recipient
 Dim objOlAppAnexo As Outlook.Attachment
 Set objOlAppApp = CreateObject("Outlook.Application")
 Set objOlAppMsg = objOlAppApp.CreateItem(olMailItem)

 'Celulas com os endereços dos destinatários
 sListaDestinatarios = "Nomes"

 'Inserir aqui o nome da aba que contêm a informação a ser copiada no corpo do email
 sConteudoDoEmail = "HORAHORA"

 'Posicionar na aba onde estão os destinatários
 Sheets(sListaDestinatarios).Activate
 Set enderecos = ActiveSheet.Range("C4:C10")

 With objOlAppMsg

 'Processar endereços para o envio
 For Each celula In enderecos
 If celula.Text <> "" And InStr(1, celula.Text, "@") > 0 Then
 Set objOlAppRecip = .Recipients.Add(celula.Text)

 'definir o tipo do destinatario
 Select Case UCase(celula.Offset(0, 1).Text)
 Case "CC"
 objOlAppRecip.Type = olCC
 Case "BCC"
 objOlAppRecip.Type = olBCC
 Case ""
 objOlAppRecip.Type = olTo
 End Select
 End If
 Next celula

 'verificar se existe destinatário
 If .Recipients.Count = 0 Then GoTo fim

 'Anexar ficheiro, com o nome e caminho escrito na celula C13
 anexo = ActiveSheet.Range("C13")

 'verificar se o caminho para o anexo é válido
 If Dir(anexo) = "" Then
 r = MsgBox("Anexo inexistente ou caminho invalido, " & _
 "pretende enviar assim mesmo ? ", _
 vbYesNo, _
 "Erro de anexo")
 If r = vbYes Then GoTo enviar Else GoTo fim
 End If
 Set objOlAppAnexo = .Attachments.Add(anexo)
 enviar:

 'definir a sua importancia
 .Importance = olImportanceHigh

 'O assunto
 .Subject = "Arquivo HORAHORA - " & Format(Now, "dd-mmm.yyyy hh:mm:ss")

 'Posicionar na aba onde está o conteudo a ser copiado no corpo do email (HORAHORA)
 Sheets(sConteudoDoEmail).Activate


 'O conteudo do Mail

 .HTMLBody = "Segue Arquivo HORAHORA......... " & vbCrLf & _
 ActiveWorkbook.Sheets("HORAHORA").Range("A1:A10").Value '<<<<-------- Aqui o depurador avisa que há tipos incompatíveis!!!!

 'enviar mensagem
 .Display
 '.Send

 End With
 fim:
 'Libertar as variaveis
 Set objOlAppApp = Nothing
 Set objOlAppMsg = Nothing
 Set objOlAppAnexo = Nothing
 Set objOlAppRecip = Nothing
 End Sub
 
Postado : 06/03/2016 1:29 pm
Trindade
(@trindade)
Posts: 278
Reputable Member
 

Boa noite, kb2813.

Dê uma olhada nesse tópico, acho que pode te ajudar.
http://www.planilhando.com.br/forum/viewtopic.php?f=10&t=18757

Se a resposta foi útil! Clique na mãozinha ao lado do botão Citar.
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde.

 
Postado : 06/03/2016 8:01 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde kb2813

Seja bem-vindo ao fórum!

Como você é novato, para facilitar a tua participação, sugiro tomar conhecimento do conteúdo dos links abaixo:
viewtopic.php?f=7&t=203
viewtopic.php?f=7&t=7903
viewtopic.php?f=7&t=3841
viewtopic.php?f=7&t=16757
viewtopic.php?f=7&t=12600
viewtopic.php?f=7&t=3371

[]s

Patropi - Moderador

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

 
Postado : 07/03/2016 10:51 am