› Sviluppare funzionalita su Microsoft Office con VBA › Invia un foglio excel per mail
- AutoreArticoli
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.LogonIf 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 " & vbCrLfWith NewMail
.To = indirizziTO
.CC = IndirizziCC
.Ccn = IndirizziCcn
.Subject = Oggetto
.body = Testo & .body
.Attachments.Add miaDir & "/" & NomeFile
.Display
End With'NewMail.SEND
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
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).
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
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
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)
- AutoreArticoli