Ir ao conteúdo

Posts recomendados

Postado

Bom dia!
Estou com uma dúvida: Utilizei um código VBA de macro para enviar emails automaticamente. Ele funciona perfeitamente, contudo, quando ele encontra uma célula em branco, ele aparece uma mensagem de erro (que não altera em nada meu trabalho, mas queria resolver isso). Eu gostaria que, quando ele encontrasse uma célula em branco (entre A2 e A23, intervalo que nomeei como IntervaloMailing), ele parasse o macro, pois, as vezes, tenho apenas 3 emails para mandar (ou seja, a A5 já seria uma célula em branco. Segue o código:

 

Public WrkB                As Workbook                      'Cria variavel da Pasta de Trabalho
Public WrkS                As Worksheet                     'Cria variavel da Planilha

Public IntervaloMailing    As Range                         'Cria Variavel com o Intervalo do Mailing
Public Celula              As Range                         'Cria Variavel com o registro do Mailing


Public AppOutk As Outlook.Application                        'Cria Variavel com a Aplicacao do Outlook
Public MailOutk As Outlook.MailItem                          'Cria Variavel com o objeto "Email" do Outlook

Public Sub MandarEmail()

Set WrkB = ThisWorkbook                                      'Define a pasta de Trabalho
Set WrkS = WrkB.Sheets("Mailing")                            'Define a Planilha com os dados

Set IntervaloMailing = WrkS.Range("TabelaMailing")           'Define qual o intervalo do Mailing

With WrkS
    .Select
        For Each Celula In IntervaloMailing
            Call CriaEmail 'Chama a Rotina para Criar o Email
                 
        Next
        
End With
End Sub

Sub CriaEmail()

Set AppOutk = New Outlook.Application                          'Define a aplicação do Outlook
Set MailOutk = AppOutk.CreateItem(olMailItem)                  'Define o objeto "Email" da Aplicação Outlook

With MailOutk
    .Display
    .To = WrkS.Cells(Celula.Row, 7).Value                   'Coluna Para
    .CC = ""                   'Coluna Com Cópia
    .BCC = ""                  'Coluna Copia Oculta
    .Subject = "Envio de amostras"            'Coluna Assunto
    .Body = WrkS.Cells(Celula.Row, 10).Value                 'Coluna Corpo do Email
    .Attachments.Add WrkS.Cells(Celula.Row, 5).Value        'Coluna Anexo
End With

Set MailOutk = Nothing                                          'Esvazia a variavel
Set AppOutk = Nothing                                           'Esvazia a variavel

End Sub

 

adicionado 0 minutos depois

A mensagem de erro que aparece é esta:
 

image.png

Postado

Altere no codigo, a linha abaixo:

Set IntervaloMailing = WrkS.Range("TabelaMailing")           'Define qual o intervalo do Mailing

Por esta: 

Set IntervaloMailing = WrkS.Range("A2:A" & WrkS.Cells(Rows.Count, 1).End(xlUp).Row) 'Define qual o intervalo do Mailing

 

  • Curtir 1
Postado
Em 29/01/2018 às 10:46, Augusto César LMP disse:

Set IntervaloMailing = WrkS.Range("TabelaMailing")        

Uma sugestao:

Crie um range dinamico ( nao use o recurso tabela), no gerenciador de nomes

Use esse nome no lugar da tabelamailling

 

Assim sempre seu range sera sempre do tamanho das celulas preenchidas.

Apos criar o range a linha acima ficara assim:

 

Set IntervaloMailing = "ListadeEmails"

Nao da pra testar aqui, nao tenho outlook, mas teste com e sem aspas eu acho que é com.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!