Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Macro para Enviar Email

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
lucas.caetano
Colaborador
Colaborador
Mensagens: 20
Registrado em: Seg Abr 09, 2012 4:06 pm

Macro para Enviar Email

Mensagem por lucas.caetano »

Boa tarde,

Primeiramente obrigo, pela atenção e competência nas respostas

Então, tenho uma planinha que possui 20 abas, numeradas de 1 a 20.
Gostaria de saber se existe a possibilidade de uma macro que fosse de Aba a Aba
Selecionasse por exemplo as celulas A1: j80 de cada aba, e uma de cada vez, copiasse e colasse no Outlook
E enviasse por email uma a uma, o email e o Assunto é o mesmo para todas.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Fabio Trindade
Manda bem
Manda bem
Mensagens: 161
Registrado em: Dom Abr 24, 2011 4:07 pm

Re: Macro para Enviar Email

Mensagem por Fabio Trindade »

Bom dia, lucas.caetano.

Eu estava olhando o FORUM como de costume e vi sua duvida.

A pouco tempo tambem tinha a mesma duvida porem era com uma unica aba da planilha que tinha informações nas celulas, o codigo seleciona a celulas determinadas copia e cola no corpo de um e-mail do Outlook e envia para os destinatarios definidos no codigo. As adaptaçoes para uso do codigo vai variar com sua necessiade !

Segue Código:

Código: Selecionar todos

Sub Send_Range()
       
       'Seleciona o intervalo de células na planilha ativa.
       ActiveSheet.Range("A2:C20").Select
       
       ' Mostrar o envelope na ActiveWorkbook.
       ActiveWorkbook.EnvelopeVisible = False
       
       ' Isso é definir o campo opcional introdução acrescenta
       ' algum texto do cabeçalho para o corpo de e-mail. Ele também define
       ' as linhas Para e Assunto. Finalmente a mensagem
       ' é enviado
       With ActiveSheet.MailEnvelope
          .Introduction = "Bom dia Srs(ª)." & vbCr& "Segue Quantidade para teste" ' Texto Corpo do e-mail
          .Item.To = "teste@teste.com.br" ' Para quem sera enviado
          .Item.Cc = "teste@teste.com.br.com.br" ' Com copia
          .Item.Subject = "Quantidade de Atendimento" ' Assunto do e-mail
          .Item.Send 
       End With
	
End Sub
Espero ter ajudado ...


Jairo2010
Acabou de chegar
Acabou de chegar
Mensagens: 9
Registrado em: Ter Jul 03, 2012 8:19 pm
Localização: Imperatriz-MA
Contato:

Re: Macro para Enviar Email

Mensagem por Jairo2010 »

Olá Fábio Trindade e feras em VBA.

O meu problema acredito que seje simples para vocês, mais para mim tem tirado o meu sono. Bom vamos lá. Vamos ver se consigo ajuda. Tenho um cadastro, uso o listview para listar os cadastros efetuados. Nesta listiview uso 3 (Três) tipos de filtros. Tenho um código para envio de e-mail e o mesmo está funcionando normal. Mas o meu problema está na listview, não consigo fazer referencia para ela ir no campo corpo da msg. Obs... Uso o Outlook para envio via form. Então fiz o seguinte. Fiz uma referencia para uma plan da listview, então quando a listview carrega essa certa plan tbm carrega, quando filtro, essa certa plan tbm filtra. Os campos Para, Cópia, Assunto, Msg todos estão funcionando. Mais a certa plan quando coloco como refência só vai a ("A2"). Já coloquei referencia ("A2:M21") que no caso seria o que eu quero que vá, mas só vai a ("A2"). Vou anexar o código.

O form salva e a listview pega como referência o que tá sendo salvo e carrega.

De já quero agradeçer. Obrigado!

Código: Selecionar todos

On Error Resume Next

Texto = Worksheets("DADOS_EMAIL").Range("A2").Select        ''DADOS_EMAIL é a plan que sendo usada como referência...

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(olMailItem)
With OutMail

.To = ComboBox2.Text & ";" & ComboBox3.Text
.CC = ComboBox5.Text
.Subject = TextBox60
.Body = TextBox1 & Texto

Application.DisplayAlerts = False

'  ActiveWorkbook.SaveAs ("c:\teste.xls")
'  Application.DisplayAlerts = True
' .Attachments.Add Anexo.Caption
' .Attachments.Add ActiveWorkbook.
'No Excel 97 use ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
.Send 'ou para enviar direto sem interface use .Send

End With

Set OutMail = Nothing
Set OutApp = Nothing


danielrcom
Colaborador
Colaborador
Mensagens: 10
Registrado em: Qua Mai 09, 2012 8:36 am

Re: Macro para Enviar Email

Mensagem por danielrcom »

Fabio Trindade escreveu:Bom dia, lucas.caetano.

Eu estava olhando o FORUM como de costume e vi sua duvida.

A pouco tempo tambem tinha a mesma duvida porem era com uma unica aba da planilha que tinha informações nas celulas, o codigo seleciona a celulas determinadas copia e cola no corpo de um e-mail do Outlook e envia para os destinatarios definidos no codigo. As adaptaçoes para uso do codigo vai variar com sua necessiade !

Segue Código:

Código: Selecionar todos

Sub Send_Range()
       
       'Seleciona o intervalo de células na planilha ativa.
       ActiveSheet.Range("A2:C20").Select
       
       ' Mostrar o envelope na ActiveWorkbook.
       ActiveWorkbook.EnvelopeVisible = False
       
       ' Isso é definir o campo opcional introdução acrescenta
       ' algum texto do cabeçalho para o corpo de e-mail. Ele também define
       ' as linhas Para e Assunto. Finalmente a mensagem
       ' é enviado
       With ActiveSheet.MailEnvelope
          .Introduction = "Bom dia Srs(ª)." & vbCr& "Segue Quantidade para teste" ' Texto Corpo do e-mail
          .Item.To = "teste@teste.com.br" ' Para quem sera enviado
          .Item.Cc = "teste@teste.com.br.com.br" ' Com copia
          .Item.Subject = "Quantidade de Atendimento" ' Assunto do e-mail
          .Item.Send 
       End With
	
End Sub
Espero ter ajudado ...
Fabio,

Tem como adaptar esse código usando apenas classe de e-mail?

Digo isso pois algumas máquinas não têm Outlook instalado ou configurado.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


calimero
Acabou de chegar
Acabou de chegar
Mensagens: 1
Registrado em: Ter Jan 17, 2017 2:54 pm

Re: Macro para Enviar Email

Mensagem por calimero »

;) Eu acho que você pode servir a esta solução. Para isso, teremos um texto prefenido macro será enviado para cada cliente e no corpo do e-mail irá alterar os dados em relação a cada cliente. Os dados de alteração estão relacionados com as colunas da tabela.

Esta macro não irá utilizar um formulário do Outlook para fazer embarques, mas a partir do mesmo código irá definir os parâmetros do e-mail a ser enviado.

Os parâmetros utilizados são os seguintes:

Assunto (e-mail).
Mail (cliente emai).
Destinatário (nome do cliente).
Equilíbrio.
Data de vencimento.
O texto a ser enviado conforme definido no código VBA é concatenado com os valores de cada cliente sobre a mesa. O texto a ser enviada é a seguinte:

Caro [nome]

Queremos informá-lo que a sua data de pagamento expirou em [data].

O saldo a ser resolvido é [equilíbrio].

Atenciosamente,
Cartões de crédito.

Código: Selecionar todos

Sub EnviarEmail()
'
' Declaramos variables
'
Dim OutlookApp As Outlook.Application
Dim MItem As Outlook.MailItem
Dim cell As Range
Dim Asunto As String
Dim Correo As String
Dim Destinatario As String
Dim Saldo As String
Dim Msg As String
    '
    Set OutlookApp = New Outlook.Application
    '
    'Recorremos la columna EMAIL
    '
    For Each cell In Range("B11:B23")
        '
        'Asignamos valor a las variables
        '
        Asunto = "Saldo vencido"
        Destinatario = cell.Offset(0, -1).Value
        Correo = cell.Value
        Saldo = Format(cell.Offset(0, 1).Value, "$#,##0")
        FechaVencimiento = Format(cell.Offset(0, 2).Value, "dd/mmm/yyyy")
        '
        'Cuerpo del mensaje
        '
        Msg = "Apreciable " & Destinatario & vbNewLine & vbNewLine
        Msg = Msg & "Queremos informarle que su fecha de pago venció el día "
        Msg = Msg & FechaVencimiento & "." & vbNewLine & vbNewLine
        Msg = Msg & "El saldo que debe liquidar es "
        Msg = Msg & Saldo & vbNewLine & vbNewLine
        Msg = Msg & "Atentamente:" & vbNewLine
        Msg = Msg & "Tarjetas de crédito."
        '
        Set MItem = OutlookApp.CreateItem(olMailItem)
        With MItem
            .To = Correo
            .Subject = Asunto
            .Body = Msg
            .Send
            '
        End With
        '
    Next
    '
End Sub


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder