Ir ao conteúdo

Excel Anexar mais de um arquivo na mesma mensagem (VBA: Excel + Outlook)


Ir à solução Resolvido por Midori,

Posts recomendados

Postado

Olá a todos, tudo bem?

 

Por gentileza, poderiam me ajudar com uma dificuldade?

 

Na tabela anexa cada linha representa um e-mail a enviar.

Na coluna "O" coloco o arquivo que será anexado ao e-mail (exemplo: C:\eu\desktop\foto.pdf)

 

Gostaria de saber como colocar mais de um arquivo na célula, para enviar mais de um arquivo anexo ao mesmo e-mail.

(exemplo: C:\eu\desktop\foto20.pdf; C:\eu\desktop\foto10.pdf)

 

Muito obrigado.

 

Abs.

Teste.zip

Postado

Para multiplos anexos é só chamar Add de Attachment para cada um em loop.

 

O parâmetro Arquivos do seu procedimento Envia_Emails pode ser do tipo Variant para receber o vetor com a lista de anexos. Aí o loop fica assim,

 

...
.Body = Mensagem
For Each Nome In Arquivos
    .Attachments.Add Nome
Next Nome
.Display ' para envia o email diretamente defina o código  .Send
...

 

A variável Nome também é do tipo Variant.

 

E a chamada,

Envia_Emails EnviarPara, Mensagem, Split(Arquivos,";")

 

  • Curtir 1
Postado

Midori, tudo bem?

 

Não consegui aplicar. Dá erro!

"Tipos incompatíveis"

Tenho que modificar algo mais na tabela além do código?

 

 

Postado

"Erro em tempo de execução 13

tipos incompatíveis"

 

  Dim EnviarPara As String
    Dim Mensagem As String
    Dim Arquivos As String
    
     For I = 1 To Cells(Rows.Count, 1).End(3).Row
        EnviarPara = ThisWorkbook.Sheets(1).Cells(I, 10)
        If EnviarPara <> "" And Cells(I, "I") = "FOLLOWUP" Then
            Mensagem = ThisWorkbook.Sheets(1).Cells(I, 11)
            Arquivos = ThisWorkbook.Sheets(1).Cells(I, 15)
            Envia_Emails EnviarPara, Mensagem, Split(Arquivos, ";")
        End If
    Next I
    
End Sub

Sub Envia_Emails(EnviarPara As String, Mensagem As String, Arquivos As String)
    Dim OutlookApp As Object
    Dim OutlookMail As Object
    Set OutlookApp = CreateObject("Outlook.Application")
    Set OutlookMail = OutlookApp.CreateItem(0)
    With OutlookMail
        .To = EnviarPara
        .CC = ""
        .BCC = ""
        .Subject = ""
        .Body = Mensagem
    For Each Nome In Arquivos
        .Attachments.Add Nome
    Next Nome
.Display ' para envia o email diretamente defina o código  .Send
    End With
    Set OutlookMail = Nothing
    Set OutlookApp = Nothing
End Sub

Postado

O tipo do parâmetro Arquivos deve ser Variant como comentei. Aí está String. E falta declarar a variável Nome como Variant no procedimento Envia_Emails.

Postado

Fiz as alterações, mas agora da erro de procedimento.

Há algo mais que devo alterar na tabela além do código?

Estou anexando a tabela, poderia se possível verificar?

Estou aprendendo e posso estar deixando algo passar 

Agradeço sua ajuda!

Teste.zip

Postado

Tentei novamente, mas não consegui.

 

Segue anexo.

 

Esse código fará com que consiga selecionar os arquivos direto da tabela?

Teste.zip

Postado

O que não conseguiu?

 

Só faltou a declaração de Nome, mas assim já roda sem erro.

 

  

13 minutos atrás, Celcontrol disse:

Esse código fará com que consiga selecionar os arquivos direto da tabela?

 

Assim vai pegar os arquivos informados na coluna O.

Postado

Para anexar o arquivo preciso colocar o nome no VBA? A intenção não era essa! Desculpe se não fui claro.

 

A tabela busca na coluna "O" o caminho + nome do arquivo descrito na célula e anexa automaticamente ao e-mail quando executada macro.

 

Meu problema é que só consigo anexar um arquivo mencionando o caminho + nome dentro da célula e queria conseguir anexar mais de um desta forma.

 

Exemplo: Coluna "O" - célula "O2" [c:\pasta1\foto.pdf]

A tabela busca o arquivo "foto.pdf na pasta1 e anexa ao e-mail.

 

Queria conseguir anexar mais de um arquivo desta mesma forma, ao mesmo e-mail.

Exemplo: Coluna "O" - célula "O2" [c:\pasta1\foto.pdf; c:\pasta1\pasta2\arquivo.docx]

 

Quebrei a cabeça e não consegui...

 

Não se se fui claro desta vez, agradeço a paciência e ajuda.

  • Solução
Postado
57 minutos atrás, Celcontrol disse:

Para anexar o arquivo preciso colocar o nome no VBA?

Não precisa. Basta passar a variável com Split como já fez.

 

57 minutos atrás, Celcontrol disse:

Queria conseguir anexar mais de um arquivo desta mesma forma, ao mesmo e-mail.

Exemplo: Coluna "O" - célula "O2" [c:\pasta1\foto.pdf; c:\pasta1\pasta2\arquivo.docx]

É isso que a macro espera, o caminho do(s) arquivo(s) na coluna O. Só os nomes, sem colchetes, separados por ponto e vírgula.

Postado

Midori, tudo bem?

 

Isto! Exatamente o que precisava. Funcionou!

 

Muito obrigado por toda ajuda e paciência em explicar.

 

Ótimo dia pra ti.

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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!