Condividi:        

excell - sub invia email

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

excell - sub invia email

Postdi pablopaz » 21/02/13 11:58

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
pablopaz
Newbie
 
Post: 8
Iscritto il: 08/10/12 14:25

Sponsor
 

Re: excell - sub invia email

Postdi Anthony47 » 21/02/13 19:19

Prova inserendo in listamail la verifica di disponibilita' dell' allegato; dovrebbe corrispondere all' aggiunta di due righe (quelle marcate ***) come segue:
Codice: Seleziona tutto
'. . .
file = percorso + Cells(i, 2) & ".xlsx"
ccmail = Cells(i, 3)
if Dir(file)<>"" then       '****
  Call Inviamail(mail, file, ccmail, i)
End if           '****
i = i + 1
'etc etc

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19220
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: excell - sub invia email

Postdi pablopaz » 22/02/13 09:34

Ciao Anthony

risolto! grazie mille per il supporto e la risposta velocissima..
ciaoo
pablopaz
Newbie
 
Post: 8
Iscritto il: 08/10/12 14:25


Torna a Applicazioni Office Windows


Topic correlati a "excell - sub invia email":

Password Imap (email)
Autore: lukarello7
Forum: Discussioni
Risposte: 8

Chi c’è in linea

Visitano il forum: systemcrack e 66 ospiti