Invio mail multiplo



  • Invio mail multiplo
    di cristina (utente non iscritto) data: 07/05/2014 09:40:08

    Buongiorno a tutti. Ho visto nell'archivio storico di questo meraviglioso sito delle discussioni precedenti riguardanti l'invio di email tramite excel, però purtroppo ho scarse conoscenze con il vba e non sono riuscita a cavarmela da sola. Quindi chiedo il vostro aiuto su come creare in vba un codice da poter inviare email multiple; allego il mio file di esempio. Vi ringrazio anticipatamente per la collaborazione.



  • di Grograman data: 07/05/2014 10:08:20

    Non avendo thunderbird mi limito a proporre il codice che userei per la tua struttura dati usando Outlook sperando possa essere di spunto a qualcuno.
     
    Option Explicit
    
    Sub Mail()
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ''''' ATTENZIONE RICHIEDE L'ATTIVAZIONE DELLA LIBRERIA MICROSOFT OUTLOOK 14.0 OBJECT LIBRARY '''''
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ''''''''' Per l'attivazione andare su "Strumenti", "Riferimenti", cercare e spuntare il nome '''''
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
      Dim sAddr As String, sBody As String, sObj As String, sFrom As String, sAttc As String
      Dim oOUT As Outlook.Application
      Dim oML As MailItem
      Dim x As Long, i As Long
      Dim ws As Worksheet
      
      Set ws = ThisWorkbook.Worksheets("Email")
      x = ws.Range("B" & ws.Rows.Count).End(xlUp).Row
      
      Set oOUT = CreateObject("Outlook.Application")
      For i = 6 To x
      
        sAddr = Cells(i, 3) 'Destinatario
        sObj = Cells(i, 4) 'Oggetto
        sBody = Cells(i, 5) 'Testo
        sAddr = Cells(i, 6) 'Allegato
        sFrom = Cells(i, 2) 'Mittente
        
        Set oML = oOUT.CreateItem(olMailItem)
        With oML
          .Attachments.Add sAttc
          .To = sAddr
          .Subject = sObj
          .Body = sBody
          .SentOnBehalfOfName = sFrom
          .Display
          '.Send
        End With
      Next i
      Set oOUT = Nothing
      Set oML = Nothing
      Set ws = Nothing
    End Sub
    



  • di cristina (utente non iscritto) data: 07/05/2014 10:23:13

    Grazie Grograman del codice. Va messo in un modulo? Ma è adattato al mio file?



  • di Grograman data: 07/05/2014 10:25:17

    Ti ho allegato "Invio Email Outlook.zip", come vedi è in un modulo generico, e nel caso tu riesca a farlo girare su outlook devi ovviamente togliere "Display" in favore di "Send"!



  • di cristina (utente non iscritto) data: 07/05/2014 10:31:31

    Gentilissimo! Nella postazione dove lavoro per l'invio della posta ho solo Thunderbird, quindi qualcuno sa come cambiare Outlook per inserire Thunderbird?



  • di Textomb data: 07/05/2014 11:15:27

    Volevo segnalare che esiste una imprecisione nel codice di Grograman (...che saluto e ringrazio)

    sAddr = Cells(i, 6) 'Allegato
    va corretto con
    sAttc = Cells(i, 6) 'Allegato



  • di Grograman (utente non iscritto) data: 07/05/2014 11:39:27

    Oooops...

    Veroverissimo.

    Errore di sbaglio!



  • di nichicanta (utente non iscritto) data: 07/05/2014 11:57:28

    Buongiorno amici, se può essere di aiuto per cristina, sempre con variazioni e adattamento da parte dei nostri esperti ( che saluto con grandissimo affetto e stima), allego il codice che tempo fa mi permetteva di aprire Thunderbird ed inviare i messaggi.
    Ovviamente è da aggiungeree il codice per allegare i files e altro.

     
    Private Sub CommandButton21_Click()
    Dim strCommand As String
    
    strCommand = "C:Program Files (x86)Mozilla Thunderbird	hunderbird"
    
    strCommand = strCommand & " -compose " & Chr$(34) & "mailto:" & strTo & "?"
    strCommand = strCommand & "subject=Comunicazione & Chr$(34) & strSubject & Chr$(34) & " & ""
    strCommand = strCommand & "body= & Chr$(34) & strBody & Chr$(34)"
    
    Call Shell(strCommand, vbNormalFocus)
    End Sub
    



  • di Grograman (utente non iscritto) data: 07/05/2014 12:20:44

    Assolutamente non provata e a naso direi che non andrà perchè dubito i comandi utilizzati per la libreria di outlook siano gli stessi per thunderbird, ma tanto vale provare:

    Non è roba mia, l'ho recuparata dall'indirizzo ht tp:/ /www. teachexcel. com/exc el-help/ excel-how-to .php?i=158674
     
    Option Explicit
    Function GetDefaultEmailProgramName() As String
        'Written: November 30, 2008
        'Author:  Leith Ross
        'Summary: Function returns the name of the default email program.
        '         This works with Excel 2000 and up.
    
        Dim DefaultEmail As String
        Dim I As Long
        Dim ProgPath As Variant
        Dim WSH As Object
    
        Set WSH = CreateObject("WScript.Shell")
    
        DefaultEmail = WSH.RegRead("HKCRmailtoshellopencommand")
       
        I = InStr(2, DefaultEmail, Chr$(34))
        DefaultEmail = Mid(DefaultEmail, 2, I - 2)
    
        'This separates the email program name from the full path
        ProgPath = Split(DefaultEmail, "")
    
        GetDefaultEmailProgramName = ProgPath(UBound(ProgPath))
    
        Set WSH = Nothing
    
    End Function
    Sub Mail()
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ''''' ATTENZIONE RICHIEDE L'ATTIVAZIONE DELLA LIBRERIA MICROSOFT OUTLOOK 14.0 OBJECT LIBRARY '''''
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ''''''''' Per l'attivazione andare su "Strumenti", "Riferimenti", cercare e spuntare il nome '''''
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
      Dim sAddr As String, sBody As String, sObj As String, sFrom As String, sAttc As String
      Dim oOUT As Outlook.Application
      Dim oML As MailItem
      Dim x As Long, I As Long
      Dim ws As Worksheet
      Dim s As String
      
      Set ws = ThisWorkbook.Worksheets("Email")
      x = ws.Range("B" & ws.Rows.Count).End(xlUp).Row
      
      s = GetDefaultEmailProgramName()                           's = "thunderbird.exe"
      Set oOUT = CreateObject(s)                                        'crashes here
     
        
      'Set oOUT = CreateObject("Outlook.Application")
      For I = 6 To x
      
        sAddr = Cells(I, 3) 'Destinatario
        sObj = Cells(I, 4) 'Oggetto
        sBody = Cells(I, 5) 'Testo
        sAddr = Cells(I, 6) 'Allegato
        sFrom = Cells(I, 2) 'Mittente
        
        Set oMail = oOUT.CreateItem(olMailItem)
        With oMail
          .Attachments.Add sAttc
          .To = sAddr
          .Subject = sObj
          .Body = sBody
          .SentOnBehalfOfName = sFrom
          .Display
          '.Send
        End With
      Next I
      Set oOUT = Nothing
      Set oML = Nothing
      Set ws = Nothing
    End Sub



  • di Grograman (utente non iscritto) data: 07/05/2014 12:22:04

    Ah sono un pirla, non ho modificato le dichiarazioni di variabili:


     
      Dim oOUT As Object
      Dim oMailL As Object
    
    
    e NON
      Dim oOUT As Outlook.Application
      Dim oML As MailItem



  • di cristina (utente non iscritto) data: 07/05/2014 13:54:19

    Scusatemi ma non sto capendo nulla



  • di cristina (utente non iscritto) data: 07/05/2014 21:42:22

    Quindi adesso cosa dovrei fare per il mio file? Help me please



  • di cristina (utente non iscritto) data: 10/05/2014 12:16:41

    Che cosa mi suggerite di fare? Aspetto una vostra risposta



  • di cristina (utente non iscritto) data: 19/05/2014 14:51:55




  • di Saverio (utente non iscritto) data: 22/05/2014 10:03:07

    Scusate se mi intrometto, ma ho più o meno la stessa esigenza di Cristina. Ho provato la macro di Grograman ma va in crash al punto dove sta scritto quindo non va. Io so che con Outlook funziona perfettamente in quanto Outlook facendo parte del pacchetto Office, Excel è già impostato per farlo funzionare; adesso mi chiedo: ma per Thunderbird si può fare qualcosa oppure bisogna rinunciare a quest'idea?