Sviluppare funzionalita su Microsoft Office con VBA Invia un foglio excel per mail

LoginRegistrati
Stai vedendo 7 articoli - dal 1 a 7 (di 7 totali)
  • Autore
    Articoli
  • #29633 Risposta

    GIUSEPPE

      Ho una macro che salva una cartella di lavoro excel e ne invia un foglio ad alcuni indirizzi mail. Devo inviare il foglio a tre persone diverse, ma nel campo IndirizziTO posso inerire un solo riferimento. Un secondo riferimento lo posso inserire nel campo IndirizziCC; ma non saprei come fare per il terzo nominativo (n.b. F26 ed F27 sono le celle che contengono ciascuna un diverso indirizzo mail; il terzo indirizzo è nella cella F28).

      Set AppMail = GetObject(, "Outlook.Application")
      If Err.Number <> 0 Then
      Err.Clear
      Set AppMail = CreateObject("Outlook.Application")
      AppMail.Session.Logon

      If Err <> 0 Then
      MsgBox "Could not load Outlook", vbOKOnly + vbInformation, "Error report"
      End
      End If
      End If
      indirizziTO = Sheets("Dati").Range("F26")
      IndirizziCC = Sheets("Dati").Range("F27")

      Set NewMail = AppMail.CreateItem(0)

      Oggetto = "Invio certificato di idoneità" & vbCrLf & vbCrLf
      Testo = "Invio il certificato di idoneità di cui in allegato. Cordiali saluti. dott. Giuseppe Vitiello " & vbCrLf

      With NewMail
      .To = indirizziTO
      .CC = IndirizziCC
      .Ccn = IndirizziCcn
      .Subject = Oggetto
      .body = Testo & .body
      .Attachments.Add miaDir & "/" & NomeFile
      .Display
      End With

      'NewMail.SEND

       

       

       

      #29635 Risposta
      Marius44
      Marius44
      Moderatore
        34 pts

        Ciao

        E se provassi a concatenare i nomi tutti sullo stesso indirizzo?

        Mi spiego. Quando voglio mandare una mail a diversi soggetti, inserisco gli indirizzi uno appresso all'altro separandoli, a seconda del gestore, con una virgola o un punto e virgola.

         

        Ciao,

        Mario

        #29637 Risposta

        GIUSEPPE

          Ho provato, ma non funziona. Se inserisco due riferimenti si blocca tutto. Probabilmente si devono concatenare i nomi, ma non nello stesso modo in cui si fa quando mandiamo una mail (vergola o punto e virgola che sia).

          #29642 Risposta
          Marius44
          Marius44
          Moderatore
            34 pts

            Ciao

            No, scusa, sbaglio io. Devi creare un ciclo e passare un indirizzo alla volta.

            Grosso modo è qualcosa del genere (ovviamente da adattare)

            .....
            rr = Range("A" & Rows.Count).End(xlUp).Row
            For i = 2 To rr
            Set OutApp = CreateObject("Outlook.Application")
            Set OutMail = OutApp.Createitem(0)
            'On Error Resume Next
            With OutMail
            .To = Cells(i, 2)
            .cc = Cells(i, 3)
            .bcc = ""
            .Subject = Cells(i, 4)
            .body = Cells(i, 5)
            '.Attachments.Add (Cells(i, 6) & Cells(i, 7)) codice che allega i file selezionati da  percorso
            
            '.display questo comando visualizza la finestra del messaggio di outlook e in caso di
            ' invio di email multiple fa sfarfallare il monitor
            .send
            Application.SendKeys "%I" ' non fa uscire la finestra di Outlook che autorizza l'invio
            End With
            'On Error Resume Next 'con questo comando anche in caso di errore va avanti
            On Error GoTo ERRORE
            Cells(i, 15) = "INVIATA"
            Set OutMail = Nothing
            Set OutApp = Nothing
            Application.SendKeys "%I"
            Next i
            ERRORE:
            Cells(i, 16) = "ERRORE, NON INVIATA"
            Application.ScreenUpdating = True
            Resume Next
            
            ....

            Ciao,

            Mario

            #29715 Risposta
            Marius44
            Marius44
            Moderatore
              34 pts

              Ciao

              Se non hai ancora risolto, potresti provare in questo modo:

              in una cella inserisci tutti gli indirizzi mail separati da una virgola e quindi fai riferimento a detta cella come destinatario.

               

              Ciao,

              Mario

               

               

              #29716 Risposta
              Luca73
              Luca73
              Partecipante
                32 pts

                Ciao secondo me puoi o concatenare, oppure fare un ciclo se fai un ciclo dovrai fare un qualcosa del genere

                .To = .To & ";" & Cells(i, 2)
                #29717 Risposta
                Luca73
                Luca73
                Partecipante
                  32 pts

                  Ciao ho trovato questo codice in una vecchia discussione

                  indirizziTO = Email.Range("A2") & "; " & Email.Range("a3") & "; " & Email.Range("a4") & "; " & Email.Range("a5")

                  Chiaramente email era un foglio 

                LoginRegistrati
                Stai vedendo 7 articoli - dal 1 a 7 (di 7 totali)
                Rispondi a: Invia un foglio excel per mail
                Gli allegati sono permessi solo ad utenti REGISTRATI
                Le tue informazioni:



                vecchio frac - 2750 risposte

                albatros54
                albatros54 - 1052 risposte

                patel
                patel - 1045 risposte

                Marius44
                Marius44 - 943 risposte

                Luca73
                Luca73 - 757 risposte