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