Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Invio E-Mail con Excel e VBA

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

Invio E-Mail con Excel e VBA

Postdi sasami_sato » 21/09/10 12:00

Ciao,

ho scritto questa macro per inviare email da excel2003 usando outlook 2007:

Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)

With OutMail
.To = desT
.CC = ""
.BCC = ""
.Subject = Ogget
.boDY = Corpo
.Send
End With

Set OutMail = Nothing
Set OutApp = Nothing

La macro funziona benissimo ma, dopo aver inviato un certo numero di mail, l'invio si blocca e tutte le mail
inviate con la macro vengono inserite nella casella "posta in uscita" di outlook 2007 e vengono inviate
solo aprendo manualmente outlook 2007.

Qualcuno sa risolvermi questo problema?

Grazie
sasami_sato
Newbie
 
Post: 5
Iscritto il: 21/09/10 11:54

Sponsor
 

Re: Invio E-Mail con Excel e VBA

Postdi Anthony47 » 21/09/10 14:39

Ciao sasami_sato e benvenuto nel forum.
Questa macro (anzi, questi spezzoni di macro) secondo me non invia nessuno dei messaggio, ma vengono tutti posizionati in Posta in uscita.
Guarda queste due discussioni, che hanno sviscerato alquanto il problema:
viewtopic.php?f=26&t=85263
viewtopic.php?f=26&t=83835&start=20#p479791

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Invio E-Mail con Excel e VBA

Postdi sasami_sato » 21/09/10 14:58

Ciao Anthony47,

grazie, avevo letto quei topic, ma il mio problema è quello di inviare la mail
in maniera silente con outlook2007 chiuso, mentre nei topic la soluzione è usare il metodo
.display

e poi inviare con

Application.SendKeys "%a"

In questo modo, l'utente che sta lavorando sul pc, si vede aprire la finestra di outlook e
solo nella migliore delle ipotesi, se non tocca la tastiera, la mail viene inviata.

La cosa stranissima è che con la macro che ho scritto (..scopiazzando qua e la...)

Sub InviaMail(ByVal Ogget As String, ByVal Corpo As String, ByVal desT As String)
'ATTENZIONE!!!!FUNZIONA SOLO SUI PC SU CUI E' INSTALLATO OUTLOOK 2007 ED E' SETTATO
'IL CAMPO TOOLS/TRUST CENTER/PROGRAMMATIC ACCESS/ a NEVER WARN ME

Dim OutApp As Object
Dim OutMail As Object

Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)

With OutMail
.To = desT
.CC = ""
.BCC = ""
.Subject = Ogget
.boDY = Corpo
.Send
End With

Set OutMail = Nothing
Set OutApp = Nothing

End Sub

le prime N (N è un numero random) mail vengono inviate correttamente e poi tutto si blocca, nel senso che tutte le mail vengono inserite nella cartella "in uscita" di outlook. A questo punto, aprendo manualmente outlook, tutte le mail vengono inviate.
Questo "fenomeno" succede su tutti i PC aziendali, cioe macchine con HW e SW diversi ad eccezione di excel2003 ed
outlook2007.

La soluzione potrebbe essere forzare lo svuotamento della cartella "in uscita" inviando il comando "invia/ricevi" ad outlook, ma non so come si faccia col vba.

Hai altri consigli?

Grazie.
sasami_sato
Newbie
 
Post: 5
Iscritto il: 21/09/10 11:54

Re: Invio E-Mail con Excel e VBA

Postdi Flash30005 » 21/09/10 15:29

Ciao Sasami_Sato
un link consigliato da Anthony riporta (nella pagina 2) una macro realizzata e testata da Ricky per l'invio delle email in condizioni più "ostiche", hai provato a vedere se ti funziona?
La replico qui

Codice: Seleziona tutto
Sub Invia_Email_Ultima_Buona()
    Dim OutApp As Object
    Dim OutMail As Object
    Dim EmailAddr As String
    Dim Subj As String
    Dim BodyText As String
   
    Foglio1.Select
   
' RR contiene il nuemro di utenti cui inviare le e-mail (1 per utente)
    RR = Range("B" & Rows.Count).End(xlUp).Row
   
' I dati iniziano dalla seconda riga
    For I = 2 To RR
        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)
        With OutMail
       
' La colonna "B" contiene gli indirizzi e-mail dei vari destinatari
            .To = Cells(I, 2)
           
' La colonna "C" contiene l'indirizzo e-mail in "Copia per Conoscenza"
            .CC = Cells(I, 3)
           
' Eventuale e-mail in "Copia per conoscenza nascosta"
            .BCC = ""
           
' La colonna "D" contiene l'oggetto della e-mail
            .Subject = Cells(I, 4)
           
' La colonna "E" contiene l testo della e-mail
            .Body = Cells(I, 5)

' La colonna "F" contiene il percorso ove si trova il file da allegare
' La colonna "G" contiene il nome del file da allegare
            .Attachments.Add (Cells(I, 6) & Cells(I, 7))
           
            .Display
        End With
        Set OutMail = Nothing
        Set OutApp = Nothing
        Application.SendKeys "%a"
    Next I
End Sub


Come dice Anthony la macro postata da te è incompleta in quanto non può inviare diverse email a meno che, volutamente, hai inviato solo una parte del codice da te utilizzato.

Fai sapere
Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Invio E-Mail con Excel e VBA

Postdi sasami_sato » 21/09/10 17:04

La mia macro completa è nel secondo post.
La macro serve effettivamente per inviare una sola mail per volta.

Nel mio caso l'invio della mail deve essere fatto quando l'utente, che sta
lavorando sul foglio excel, effettua certe operazioni sui dati del foglio.

La macro che mi avete consigliato funziona, ma apre la finestra di outlook
che viene quindi visualizzata sul pc dell'utente e poi
effettua l'invio col sendkeys.
Nella mia applicazione non mi posso permettere questo comportamento,
l'invio deve essere completamente trasparente all'utente che sta usando il foglio
altrimenti l'utente potrebbe chiudere la finestra di outlook o passare il focus su altre
applicazioni bloccando l'invio della mail.

La macro che ho scritto effettua l'invio silente...peccato che dopo N mail non invia più
niente e mette tutte le mail in coda nella cartella "in uscita".

Altre soluzioni?
C'è la possibilità, tramite VBA, di forzare la procedura invia/ricevi di outlook?

Ciao e grazie
sasami_sato
Newbie
 
Post: 5
Iscritto il: 21/09/10 11:54

Re: Invio E-Mail con Excel e VBA

Postdi ricky53 » 21/09/10 23:20

Ciao,
sono io che ho inserito la discussione cui Anthony e Flash facevano riferimento e, quindi, sono l'autore della macro:
ti posso garantire che con office 2003 l'invio delle e-mail (nel mio caso più di una - mediante un ciclo for/next -in base alle necessità che avevo) avviene in modo trasparente per l'utente che lavora sul file.

Tu hai provato con la mia macro?

Per inviare una sola e-mail sostituisci l'istruzione seguente
RR = Range("B" & Rows.Count).End(xlUp).Row
con
RR = 2

Non ho il 2007 e non posso dirti se il comportamento possa essere diverso ma penso di no.

Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Invio E-Mail con Excel e VBA

Postdi Anthony47 » 22/09/10 08:55

Come Ricky nemmeno io uso Office 2007, quindi non posso fare alcuna provacon la tua macro.
Se vuoi proprio lavorare in modalita' nascosta potresti provare con cdosys.dll, come descritto in questo post (e soprattutto nei siti dei maestri DeBruin e Sadowki, linkati): viewtopic.php?f=26&t=87487

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Invio E-Mail con Excel e VBA

Postdi sasami_sato » 22/09/10 14:14

Ho provato la macro di ricky ma quando viene eseguito il comando
.display sullo schermo del mio pc si apre la finestra di outlook con
la mail. Poi la mail viene inviata col comando sendkeys.
Quindi l'utente si vede apparire questa finestra di outlook come un popup
con i problemi già evidenziati (se l'utente sposta il focus su un'altra finestra
il comando sendkeys si perde nel nulla e la mail resta in background).

probabilmente c'è qualche incompatibilità fra excel 2003 e outlook 2007

Grazie per l'aiuto, provo a studiare i nuovi link di anthony
sasami_sato
Newbie
 
Post: 5
Iscritto il: 21/09/10 11:54

Re: Invio E-Mail con Excel e VBA

Postdi Flash30005 » 22/09/10 14:51

Ho riletto attentamente quanto da te postato,
in particolar modo questo paragrafo:

sasami_sato ha scritto:La macro che ho scritto effettua l'invio silente...peccato che dopo N mail non invia più
niente e mette tutte le mail in coda nella cartella "in uscita".


Secondo me, dovremmo fare un'analisi più approfondita della causa
che non è dovuta alla macro, visto che le email si accodano in uscita,
quindi, prova a rispondere alle domande

1) dopo quante N email si blocca?
2) il numero N è sempre costante?
3) La prima email non inviata ha sempre lo stesso dominio (del destinatario)
4) Hai un antispam installato sul Pc che usi per l'invio?

Vediamo di tirar fuori qualcosa...

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Invio E-Mail con Excel e VBA

Postdi sasami_sato » 22/09/10 16:16

il numero N è completamente random
il dominio dei destinatari è sempre lo stesso.

Outlook è chiuso su tutti i pc perchè non viene utilizzato dagli
utenti che usano il file excel.

Appena mi accorgo che la macro non sta più inviando le mail
apro outlook e tutte le mail che sono rimaste in coda vengono immediatamente inviate.

Inizio ad avere il dubbio che ci sia qualche incompatibilità fra excel2003 e outlook2007
sasami_sato
Newbie
 
Post: 5
Iscritto il: 21/09/10 11:54

Re: Invio E-Mail con Excel e VBA

Postdi Flash30005 » 23/09/10 08:32

Non credo al discorso di incompatibilità, nel senso che la macro funziona e "fa il suo dovere" è Outlook che non invia.
Quindi penso più ad un blocco di protezione, oppure a un "ingolfamento" di outlook e quanto dici qui potrebbe essere la conferma
sasami_sato ha scritto:Questo "fenomeno" succede su tutti i PC aziendali...

Ma se vuoi e hai la possibilità di fare la prova con Office 2007, puoi toglierti il dubbio.
Altrimenti hai la possibilità di provare l'intero applicativo in un Pc non aziendale (a casa per esempio)?

Il numero random può essere da 1 a 1000 ?
(può accadere che il "blocco" avvenga anche alla seconda email?)
Hai detto che la macro invia una email alla volta,
ma tra una e l'altra quanto tempo passa? (il tempo minimo che supponi possa verificarsi)

Una causa c'è, tutto sta a trovarla :roll:

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Invio E-Mail con Excel e VBA

Postdi Anthony47 » 24/09/10 02:04

Mah... suggerimento assolutamente a caso: prova a inserire
Codice: Seleziona tutto
Application.Wait (Now + TimeValue("0:00:04"))

subito prima di Set OutMail = Nothing

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Invio E-Mail con Excel e VBA

Postdi picchio2212 » 22/02/11 16:30

salve ragazzi,
potreste aiutarmi?
devo inviare delle mail da un file excel ma non so come devo fare.... premetto che non sono un programmatore.
in pratica devo inserire delle mail sul file xls e con un bottone farle spedire... come posso fare?
inoltre è possibile inserire il l'oggetto il testo e poi spedirle a tutti quanti prensenti nell'elenco?
thankssss!
picchio2212
Newbie
 
Post: 4
Iscritto il: 22/02/11 16:26

Re: Invio E-Mail con Excel e VBA

Postdi Anthony47 » 22/02/11 22:12

Ciao picchio2212 e benvenuto nel forum.
Immagino che avrai letto la discussione su cui ti sei accodato e anche le due che avevo linkato nel mio messaggio del 21-9-2010 (vedi viewtopic.php?f=26&t=88153&p=515784#p501484).

Su quale aspetto ti sei arenato?
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Invio E-Mail con Excel e VBA":


Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti