Notifications
Clear all

Coluna de email envio em separado

8 Posts
2 Usuários
0 Reactions
1,323 Visualizações
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Bom dia,

Tenho uma coluna C contendo 100 emails, porem quando envio em lote o Gmail retorna erro, se eu diminuir pra 50 ocorre o mesmo. Considera Span.
Porem isso nao me atrapalha tanto, mas o que eu queria era criar uma macro ao qual eu pudesse enviar 1 email a cada vez que fosse acionada a Macro. Entao ao acionar pegaria o primeiro email que esta na coluna C2. faria o loop e assim sucessivamente. O assunto sera o conteudo de L1. O corpo do email deverá conter o conteudo das celulas V2, V6, V10, V14,V18 e V22, e o anexo o que esta na celula F1 o caminho o que esta na celula F2.

Grato

 
Postado : 23/05/2016 6:17 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Veja esses links:
http://www.rondebruin.nl/win/s1/outlook/mail.htm
http://www.rondebruin.nl/win/s1/cdo.htm
http://www.paulsadowski.com/wsh/cdo.htm

Att

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

 
Postado : 23/05/2016 6:27 am
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Achei este aqui viewtopic.php?f=10&t=18283&start=10

Vou adaptar aqui e ver como fica.

Manterei aberto o topico ainda

Grato

 
Postado : 23/05/2016 6:31 am
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

A Macro Abaixo esta funcionando corretamente, somente nao esta trocando a conta de Email ao qual devreia ser nesta Linha

EMail.SendUsingAccount = OlApp.Session.Accounts.Item(idEmail)
EMail.Display '.Send

Poderiam me dar uma ajuda ?

Sub A1_Envio_Individual()
    '======================================
    ' Preparando o E-mail para ser enviado
    '======================================
    
    Dim OlApp As Outlook.Application
    Dim OlMensagem As Outlook.MailItem
    Dim Leitura     As String
    Dim contaEmail As String
    Dim Loja        As String
    Loja = Range("A1")
    
    Leitura = Sheets(Loja).Range("I7")

    
 '--------------------------------------------------------------
 
    Dim Correio As Object, EMail As Object
    Dim Pasta As String
    Dim Arquivo As String
    Dim i As Long
    Dim UltimaLinha As Long
    Dim Mensagem As String
    Dim Assunto     As String
 
 Sheets("Envios Individuais").Visible = True

If Range("A1").Value = "Rio de Janeiro" Or Range("A1").Value = "Academias" Or Range("A1").Value = "DVitaminas" Or Range("A1").Value = "SNC" Or Range("A1").Value = "Farmacias" Then
   
    Range("C2:C100").Select
    Selection.Copy
    Sheets("Envios Individuais").Select
    Range("C3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
     Assunto = Range("A5")
     
GoTo Segue
    
Else

Dim aba As String
aba = Range("H10").Value
 Sheets(aba).Visible = True
 Sheets(aba).Select

    Range("C1:C100").Select
    Selection.Copy
    Sheets("Envios Individuais").Select
    Range("C3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Assunto = Range("A5")
        


End If

GoTo Segue
Segue:


' Preste atencao aqui
      contaEmail = ThisWorkbook.Sheets(Loja).Range("I8").Value
    'Create the Outlook application and the empty email.
    Set OlApp = CreateObject("Outlook.Application")
Set OlMensagem = OlApp.CreateItem(0)
    
   'Este laço verifica se o nome da conta w no registro do windows é igual ao valor da célula
    For w = 1 To OlApp.Session.Accounts.Count
        If OlApp.Session.Accounts.Item(w).DisplayName = contaEmail Then 'Se for verdadeiro, solicita confirmação
            If MsgBox("O E-mail será enviado usando a conta " & contaEmail & ". Confirma ?" & "    ( Estado - " & Estado & " )", vbQuestion + vbYesNo, "Envio de e-mail") = vbYes Then
                            
                idEmail = w 'Define o id da conta para o comando enviar
                Exit For 'Sai do laço
                
            Else
                 Sheets(Estado).Visible = False
                 Sheets(Loja).Select
                
                GoTo FIm 'Senão sai da rotina
            End If
        End If
    Next



    
    UltimaLinha = Sheets("Envios Individuais").Cells(Cells.Rows.Count, 2).End(xlUp).Row
    If UltimaLinha < 3 Then UltimaLinha = 3
    
    
    'Laço para pegar cada um dos destinatários da coluna B, começando na linha 3
    For i = 3 To UltimaLinha
    
         Set Correio = CreateObject("Outlook.Application")
         Set EMail = Correio.CreateItem(0)
         
         'Campo Assunto
         EMail.Subject = Assunto '"Bonus Generator"
          
        'Cria a mensagem que será enviada
        Mensagem = "        Prezado (a) " & Range("A8").Value & "," & Chr(10) & Chr(10)
        Mensagem = Mensagem & "        Estamos remetendo, anexo, a Tabela de Pedidos em Excel." & Chr(10) & Chr(10)
        Mensagem = Mensagem & "          Caso queira, me solicite um Catálogo dos Produtos em PDF ! " & Chr(10) & Chr(10)
        Mensagem = Mensagem & "Atenciosamente" & Chr(10) & Chr(10)
        Mensagem = Mensagem & Range("A11").Value & Chr(10)
        Mensagem = Mensagem & Range("A12").Value
          
         'A Mensagem que seguirá no corpo do e-mail
         EMail.Body = Mensagem
         
         'Para quem vai a mensagem...
         EMail.To = Range("C" & i).Value
         
         'Se for enviar com cópia
         'EMail.Cc = "dantas.mariana@emrpesa.com"
         
         'Arquivos a serem anexados
         EMail.Attachments.Add Range("A2").Value & "" & Range("A15").Value
     '  EMail.Attachments.Add "C:UsersAndreDesktopPedidos GauerCatalogo Leader Nutrition.pdf"

                     
         'Para pré visualizar a mensagem usar Display. Para enviar direto sem visualizar, use Send
                  
       EMail.Display  'Send
         
       EMail.ReadReceiptRequested = Leitura ' confirmação de leitura
       EMail.SendUsingAccount = OlApp.Session.Accounts.Item(idEmail)
       EMail.Display '.Send
         
         
        Set Correio = Nothing
        Set EMail = Nothing
    Next
    
    Range("C3:C110").Select
    Selection.ClearContents
    
     Sheets("Envios Individuais").Visible = False
    


   Set OlApp = Nothing




GoTo FIm
FIm:
 
    
End Sub
 
Postado : 23/05/2016 12:03 pm
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

cheguei a isso, ta um pouco embolado mas funcionando, porem o ultimo Next nao funcionou, ou seja so pega 1 Email da coluna C

Poden ajeitar pra mim ?

Grato

Andre

Sub A1_Envio_Individual()
    '======================================
    ' Preparando o E-mail para ser enviado
    '======================================
    
    Dim OlApp As Outlook.Application
    Dim OlMensagem As Outlook.MailItem
    Dim Leitura     As String
    Dim contaEmail As String
    Dim Loja        As String
  '  Dim Correio As Object, EMail As Object
    Dim Pasta As String
    Dim Arquivo As String
    Dim i As Long
    Dim UltimaLinha As Long
    Dim Mensagem As String
    Dim Assunto     As String
    
    
    Loja = Range("A1")
    
    Leitura = Sheets(Loja).Range("I7")

    
 '--------------------------------------------------------------
 
 
 Sheets("Envios Individuais").Visible = True

   
    Range("C2:C100").Select
    Selection.Copy
    Sheets("Envios Individuais").Select
    Range("C3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
     Assunto = Range("A5")
     



' Preste atencao aqui
      contaEmail = ThisWorkbook.Sheets("Envios Individuais").Range("A27").Value
        

    
  ' Create the Outlook application and the empty email.
    Set OlApp = CreateObject("Outlook.Application")
    Set OlMensagem = OlApp.CreateItem(0)
         
   'Este laço verifica se o nome da conta w no registro do windows é igual ao valor da célula
    For w = 1 To OlApp.Session.Accounts.Count
       '  For w = 1 To Correio.Session.Accounts.Count
    
        If OlApp.Session.Accounts.Item(w).DisplayName = contaEmail Then 'Se for verdadeiro, solicita confirmação
            If MsgBox("O E-mail será enviado usando a conta " & contaEmail & ". Confirma ?" & "    ( Estado - " & Estado & " )", vbQuestion + vbYesNo, "Envio de e-mail") = vbYes Then
                            
                idEmail = w 'Define o id da conta para o comando enviar
                Exit For 'Sai do laço
                
            Else
                 Sheets(Estado).Visible = False
                 Sheets(Loja).Select
                
                GoTo Fim 'Senão sai da rotina
            End If
        End If
    Next
    
  'Using the email, add multiple recipients, using a list of addresses in column C.
     With OlMensagem
    
       UltimaLinha = Sheets("Envios Individuais").Cells(Cells.Rows.Count, 2).End(xlUp).Row
    If UltimaLinha < 3 Then UltimaLinha = 3
           
    'Laço para pegar cada um dos destinatários da coluna B, começando na linha 3
    For i = 3 To UltimaLinha
    
  ' Create the Outlook application and the empty email.
    Set OlApp = CreateObject("Outlook.Application")
    Set OlMensagem = OlApp.CreateItem(0)
    

     
         'Campo Assunto
        .Subject = Assunto '"Bonus Generator"
          
        'Cria a mensagem que será enviada
        Mensagem = "        Prezado (a) " & Range("A8").Value & "," & Chr(10) & Chr(10)
        Mensagem = Mensagem & "        Estamos remetendo, anexo, a Tabela de Pedidos em Excel." & Chr(10) & Chr(10)
        Mensagem = Mensagem & "          Caso queira, me solicite um Catálogo dos Produtos em PDF ! " & Chr(10) & Chr(10)
        Mensagem = Mensagem & "Atenciosamente" & Chr(10) & Chr(10)
        Mensagem = Mensagem & Range("A11").Value & Chr(10)
        Mensagem = Mensagem & Range("A12").Value
          
         'A Mensagem que seguirá no corpo do e-mail
         .Body = Mensagem
         
         'Para quem vai a mensagem...
         .To = Range("C" & i).Value
         
         'Se for enviar com cópia
         'EMail.Cc = "dantas.mariana@emrpesa.com"
         
         'Arquivos a serem anexados
         .Attachments.Add Range("A2").Value & "" & Range("A15").Value
     '  EMail.Attachments.Add "C:UsersAndreDesktopPedidos GauerCatalogo Leader Nutrition.pdf"

                     
         'Para pré visualizar a mensagem usar Display. Para enviar direto sem visualizar, use Send
                  
       .Display  'Send
         
       .ReadReceiptRequested = Leitura ' confirmação de leitura
       .SendUsingAccount = OlApp.Session.Accounts.Item(idEmail)
       .Display '.Send
         
         
       ' Set Correio = Nothing
       ' Set EMail = Nothing


    
    Range("C3:C110").Select
    Selection.ClearContents
    

    
    


   Set OlApp = Nothing
     Set OlMensagem = Nothing
     


 
 Next
End With
 
 GoTo Fim
Fim:
 
   Sheets("Envios Individuais").Visible = False

End Sub
 
Postado : 23/05/2016 1:34 pm
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

desculpem insisitir mais uma vez, mas alguem deu uma olhada no meu ultimo codigo. Se sim espero ancioso, se nao peço uma ajuda aos colegas.

Grato e desculpem a insistencia.

Andre

 
Postado : 24/05/2016 10:49 am
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Segue um modelo de Planilha e sua respectiva Macro.

Esta funcionando, so quero que o ultimo NEXT funcione, o que nao esta funcionando, pois esta somente enviando a 1 email apenas.

Agradeço se alguem puder me ajudar.

Andre

 
Postado : 24/05/2016 12:20 pm
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Vi onde estava o erro.

Consegui achar, segue a Macro a quem possa interessar.

Grato

Andre

Sub A1_Envio_Individual()
    '======================================
    ' Preparando o E-mail para ser enviado
    '======================================
    
    Dim OlApp As Outlook.Application
    Dim OlMensagem As Outlook.MailItem
    Dim Leitura     As String
    Dim contaEmail As String
    Dim Loja        As String
  '  Dim Correio As Object, EMail As Object
    Dim Pasta As String
    Dim Arquivo As String
    Dim i As Long
    Dim UltimaLinha As Long
    Dim Mensagem As String
    Dim Assunto     As String
    
    
    Loja = Range("A1")
    
    Leitura = Sheets(Loja).Range("I7")

    
 '--------------------------------------------------------------
 
 
 Sheets("Envios Individuais").Visible = True

   
    Range("C2:C100").Select
    Selection.Copy
    Sheets("Envios Individuais").Select
    Range("C3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
     Assunto = Range("A5")
     



' Preste atencao aqui
      contaEmail = ThisWorkbook.Sheets("Envios Individuais").Range("A27").Value
        

    
  ' Create the Outlook application and the empty email.
    Set OlApp = CreateObject("Outlook.Application")
    Set OlMensagem = OlApp.CreateItem(0)
         
   'Este laço verifica se o nome da conta w no registro do windows é igual ao valor da célula
    For w = 1 To OlApp.Session.Accounts.Count
       '  For w = 1 To Correio.Session.Accounts.Count
    
        If OlApp.Session.Accounts.Item(w).DisplayName = contaEmail Then 'Se for verdadeiro, solicita confirmação
            If MsgBox("O E-mail será enviado usando a conta " & contaEmail & ". Confirma ?" & "    ( Estado - " & Estado & " )", vbQuestion + vbYesNo, "Envio de e-mail") = vbYes Then
                            
                idEmail = w 'Define o id da conta para o comando enviar
                Exit For 'Sai do laço
                
            Else

            End If
        End If
    Next
    

    
       UltimaLinha = Sheets("Envios Individuais").Cells(Cells.Rows.Count, 3).End(xlUp).Row
    If UltimaLinha < 3 Then UltimaLinha = 3
           
    'Laço para pegar cada um dos destinatários da coluna B, começando na linha 3
    For i = 3 To UltimaLinha
    
  ' Create the Outlook application and the empty email.
    Set OlApp = CreateObject("Outlook.Application")
    Set OlMensagem = OlApp.CreateItem(0)
    
  'Using the email, add multiple recipients, using a list of addresses in column C.
     With OlMensagem
     
         'Campo Assunto
        .Subject = Assunto '"Bonus Generator"
          
        'Cria a mensagem que será enviada
        Mensagem = "        Prezado (a) " & Range("A8").Value & "," & Chr(10) & Chr(10)
        Mensagem = Mensagem & "        Estamos remetendo, anexo, a Tabela de Pedidos em Excel." & Chr(10) & Chr(10)
        Mensagem = Mensagem & "          Caso queira, me solicite um Catálogo dos Produtos em PDF ! " & Chr(10) & Chr(10)
        Mensagem = Mensagem & "Atenciosamente" & Chr(10) & Chr(10)
        Mensagem = Mensagem & Range("A11").Value & Chr(10)
        Mensagem = Mensagem & Range("A12").Value
          
         'A Mensagem que seguirá no corpo do e-mail
         .Body = Mensagem
         
         'Para quem vai a mensagem...
         .To = Range("C" & i).Value
         
         'Se for enviar com cópia
         'EMail.Cc = "dantas.mariana@emrpesa.com"
         
         'Arquivos a serem anexados
         .Attachments.Add Range("A2").Value & "" & Range("A15").Value
     '  EMail.Attachments.Add "C:UsersAndreDesktopPedidos GauerCatalogo Leader Nutrition.pdf"

                     
         'Para pré visualizar a mensagem usar Display. Para enviar direto sem visualizar, use Send
                  
       .Display  'Send
         
       .ReadReceiptRequested = Leitura ' confirmação de leitura
       .SendUsingAccount = OlApp.Session.Accounts.Item(idEmail)
       .Display '.Send
         
    

    
    


   Set OlApp = Nothing
     Set OlMensagem = Nothing
     



 

End With
 
Next

    Range("C3:C110").Select
    Selection.ClearContents


   Sheets("Envios Individuais").Visible = False

End Sub
 
Postado : 24/05/2016 12:38 pm