Buongiorno a tutti
ho una macro excel che data una lista di clienti con il rispettivo indirizzo email, invia in automatico una email a tutti i clienti e inoltre allega al file un file .xlsx che va a perscare da una cartella sul mio desktop.
di seguito un esempio del file:
COLONNA A (email) COLONNA B (nome) COLONNA C (email cc.)
aaa@gmail.com CLIENTE 1 ppp@gmail.com
bbb@gmail.com CLIENTE 2 ppp@gmail.com
bbb@gmail.com CLIENTE 2 ppp@gmail.com
si possono inoltre impostare:
- percorso da cui persca il file da allegato
- testo della mail.
il mio problema è il seguente:
in pratica il sistema invia "n" messaggi email fino a quando trova campi popolati nella COLONNA A, e allega un file allegato solo se trova il file nel percorso assegnato (il nome del file è lo stesso del nome del cliente in colonna B.
E fin qui tutto ok, funziona tutto molto bene.
Il mio obiettivo però è che invii "n" email quanti sono i file in allegato, in quanto quando per un dato cliente ad esempio "CLIENTE 2" non trova il file allegato .xlsx, non deve proprio inviare la mail, mentre al momento invia una email ovviamente senza allegato perchè non lo trova.
di seguito posto il codice VBA delle 2 sub:
------------------------------------------------------------------------------------------------------
Sub Inviamail(mail As String, file As String, ccmail As String, i As Integer)
Dim OutApp As Object
Dim OutMail As Object
Dim bodymail As String
Dim c As Integer
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.From = "prova@gmail.com"
.To = mail
.CC = Trim(ccmail)
.BCC = Cells(11, 6)
.Subject = Cells(12, 6) & " - " & Cells(i, 2)
.BodyFormat = olFormatHTML
bodymail = "<html><head></head><body>"
For c = 1 To 8
bodymail = bodymail + Cells(c + 12, 6) + "<br /><br />"
Next c
bodymail = bodymail + "<br /><br /><br />" + "<b>" + Cells(21, 6) + "</b></html></body>"
.HTMLbody = bodymail
.Attachments.Add file
.Send
End With
On Error GoTo errore
Cells(i, 4) = "INVIATA !"
Set OutMail = Nothing
Set OutApp = Nothing
Exit Sub
errore:
Cells(i, 3) = "ERRORE !"
End Sub
Sub listamail()
Dim i As Integer
Dim mail As String
Dim ccmail As String
Dim file As String
Dim percorso As String
Range("D:D").ClearContents
percorso = Cells(1, 6)
If Right$(percorso, 1) <> "\" Then percorso = percorso & "\"
i = 2
While Trim(Cells(i, 1)) <> ""
mail = Cells(i, 1)
file = percorso + Cells(i, 2) & ".xlsx"
ccmail = Cells(i, 3)
Call Inviamail(mail, file, ccmail, i)
i = i + 1
Wend
End Sub
------------------------------------------------------------
Grazie a quanti vorranno gentilmente aiutarmi.
ciao
Pablopaz