Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

EXCEL - creazione macro per invio automatico 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

Re: EXCEL - creazione macro per invio automatico email

Postdi ahidai » 05/03/12 15:38

Ok grazie lo stesso Anthony, purtroppo devo abbondonare questo progetto perchè non ne sono capace.
Ciao e buona giornata.
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Sponsor
 

Re: EXCEL - creazione macro per invio automatico email

Postdi Anthony47 » 05/03/12 16:06

:?: :?:
L' alternativa e' che tu valuti se le mail sono da spedire e se SI premi il pulsante.

Cosa mi sfugge?
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: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: EXCEL - creazione macro per invio automatico email

Postdi ahidai » 05/03/12 17:32

Anthony47 ha scritto::?: :?:
L' alternativa e' che tu valuti se le mail sono da spedire e se SI premi il pulsante.
Cosa mi sfugge?


Ciao Anthony e grazie ancora per la risposta e per la pazienza, le mail sono da spedire senza problemi, nel senso che devo dare l'imput alle persone responsabili della pratica di ottemperare.
Quindi ti chiedo cortesemente se è possibile fare una cosa del genere.
Grazie ancora e buona serata.
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: EXCEL - creazione macro per invio automatico email

Postdi Flash30005 » 05/03/12 23:30

L'email non si avvia perché non hai alcun automatismo che la invia
aggiungi in testa alla macro che hai questo codice
Codice: Seleziona tutto
Public Riga As Integer
Sub Scadenza()
UE = Worksheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row
For RR = 2 To UR
If Range("E" & RR).Value = 10 Or Range("E" & RR).Value = 3 Or Range("E" & RR).Value = 1 Then
Riga = RR
Call Ivioemail
End If
Next RR
End Sub


Elimina il ciclo For Next di IE nella tua macro Invioemail
inserendo solo
IE = Riga
(togli anche next IE)

Ora devi solo dire come vorresti far attivare la macro "Scadenza", all'avvio del file?
allora chiamerai questa macro in
Codice: Seleziona tutto
Private Sub Workbook_Open()
Call Scadenza
End Sub


(alla fine della procedura potrai anche chiudere il file)
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: EXCEL - creazione macro per invio automatico email

Postdi Anthony47 » 05/03/12 23:38

Flash, ma che succede se l' utente apre il file due o piu' volte?
Io mi sono irrigidito sul fatto che e' l' utente che deve decidere se le mail vanno inviate o meno, perche' solo lui sa quale e' la situazione; la macro da' una mano a eseguire, ma non conosce tutte le situazioni.

Ciao a tutti.
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: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: EXCEL - creazione macro per invio automatico email

Postdi ahidai » 06/03/12 10:46

Flash30005 ha scritto:Ora devi solo dire come vorresti far attivare la macro "Scadenza", all'avvio del file?
allora chiamerai questa macro in
Codice: Seleziona tutto
Private Sub Workbook_Open()
Call Scadenza
End Sub

(alla fine della procedura potrai anche chiudere il file)
Ciao


Anthony47 ha scritto:Flash, ma che succede se l' utente apre il file due o piu' volte?
Io mi sono irrigidito sul fatto che e' l' utente che deve decidere se le mail vanno inviate o meno, perche' solo lui sa quale e' la situazione; la macro da' una mano a eseguire, ma non conosce tutte le situazioni.


Ciao Flash e ciao Anthony.
Per Anthony, il file verrà aperto una sola volta al giorno e vorrei che si aprisse all'accensione del pc e comunque anche se dovesse riavviarsi il pc per qualsiasi motivo "mancanza di energia elettrica etc." e dovesse rinviare le mail non c'è nessun problema.

Per Flash, ho modificato la macro in questo modo e mi sono “perso”:

Codice: Seleziona tutto
Public Riga As Integer
Private Sub Workbook_Open()
Call Scadenza
End Sub
Sub Scadenza()
UE = Worksheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row
For RR = 2 To UR
If Range("E" & RR).Value = 10 Or Range("E" & RR).Value = 3 Or Range("E" & RR).Value = 1 Then
Riga = RR
Call Ivioemail
End If
Next RR
End Sub
Sub Invioemail()
Dim OutApp As Object
Dim OutMail As Object
Dim EmailAddr As String
Dim EmailAddr2 As String
Dim Subj As String
Dim BodyText As String
UE = Worksheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row
'  (a)
Set OutApp = CreateObject("Outlook.Application")
'For IE = 2 To UE     '<<<< spostare qui dopo aver settato OutApp
''compilazione di un testo standard di accompagnamento
BDT = ""    '<<<<<
BDT = BDT & vbCrLf & "Avviso di scadenza pratica, mancano giorni:  " & Range("F" & IE).Value
BDT = BDT & vbCrLf & "Cordiali saluti" & vbCrLf
BDT = BDT & "Per conto di Pippo"
''  (b)
Nominat = Sheets("Foglio1").Range("B1").Value
'OutFile = Range("E" & IE).Value
EmailAddr = Range("G" & IE).Value    '<<<MODIFICATA
If EmailAddr = "" Then GoTo NoMail
EmailAddr2 = Range("B" & IE).Value
Subj = Range("C" & IE).Value
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = EmailAddr
.CC = EmailAddr2
.BCC = ""
.Subject = Subj
.Body = BDT
.Display 'or use .send
'.SendKeys ("%(i)")
'.Attachments.Add OutFile
End With
    Application.Wait (Now + TimeValue("0:00:07"))   '<<< spostare qui
    Application.SendKeys "%i"                                    '<<< spostare qui
    Application.Wait (Now + TimeValue("0:00:07"))   '<<< spostare qui
'  (c)
Set OutMail = Nothing
IE = Riga
NoMail:
'Next IE                                            '<<< spostare qui
'  (d)
Set OutApp = Nothing
End Sub


Non riesco più ad andare avanti, come posso fare? Poi mi chiedevo è possibile includere nella macro che mi spunta su Outlook 2007 la conferma di lettura dell’e-mail?

Scusatemi e abbiate pazienza, ma non ho le vostre conoscenze, comunque ci sto provando a capirci/imparare qualcosa.
Ciao buona giornata.
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: EXCEL - creazione macro per invio automatico email

Postdi Flash30005 » 06/03/12 11:08

Non so cosa hai modificato ma vedo degli errori quindi pubblico tutto ciò che va inserito nel modulo
Codice: Seleziona tutto
Public Riga As Integer
Sub Scadenza()
UR = Worksheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row
For RR = 2 To UR
If Range("K" & RR).Value = 0 Then
If Range("E" & RR).Value = 10 Or Range("E" & RR).Value = 3 Or Range("E" & RR).Value = 1 Then
Range("K" & RR).Value = 1
Riga = RR
Call Invioemail
Else: Range("K" & RR).Value = 0
End If
End If
Next RR
End Sub
Sub Invioemail()
Dim OutApp As Object
Dim OutMail As Object
Dim EmailAddr As String
Dim EmailAddr2 As String
Dim Subj As String
Dim BodyText As String

'  (a)
Set OutApp = CreateObject("Outlook.Application")
IE = Riga
''compilazione di un testo standard di accompagnamento
BDT = ""    '<<<<<
BDT = BDT & vbCrLf & "Avviso di scadenza pratica, mancano giorni:  " & Range("F" & IE).Value
BDT = BDT & vbCrLf & "Cordiali saluti" & vbCrLf
BDT = BDT & "Per conto di Pippo"
''  (b)
Nominat = Sheets("Foglio1").Range("b1").Value
'OutFile = Range("e" & IE).Value
EmailAddr = Range("G" & IE).Value
If EmailAddr = "" Then GoTo NoMail
EmailAddr2 = Range("b" & IE).Value
Subj = Range("c" & IE).Value

'
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = EmailAddr
.CC = EmailAddr2
.BCC = ""
.Subject = Subj
.Body = BDT
.Display 'or use .send
'.SendKeys ("%(i)")
'.Attachments.Add OutFile
End With
    Application.Wait (Now + TimeValue("0:00:07"))
    Application.SendKeys "%i"
    Application.Wait (Now + TimeValue("0:00:07"))
'  (c)
Set OutMail = Nothing

NoMail:

'  (d)
Set OutApp = Nothing

End Sub


Ho aggiunto in colonna K la condizione di email inviata con "1" o non inviata con "0" in maniera tale che in caso di nuovo avvio Pc o avvio file non vengano inviate le email già spedite in quella giornata
per quanto concerne, invece la conferma ricezione non so dirti, al momento, nulla in quanto non ho MsOutlook ma vediamo se, nel frattempo, ci sarà un contributo di altri.

Ciao

N.B. resta inteso che nel foglio va inserito il codice di avvio macro
Codice: Seleziona tutto
Private Sub Workbook_Open()
Call Scadenza
End Sub
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: EXCEL - creazione macro per invio automatico email

Postdi ahidai » 06/03/12 11:23

Grazie Flash, ho ricopiato la tua macro corretta e ho eliminato la "mia".
Ho messo il file in esecuzione automatica, quindi quando accendo il pc si avvia anche il file, fin qui tutto ok, quello che non capisco come si avvia la macro in automatico una volta fatto il chek dei giorni di scadenza della pratica.
Ho messo che mancavano 10 giorni alla scadenza, ho fatto ripartire il file, ma non succede niente, cioè non mi parte l'email.
Una volta lanciato il file è possibile con la macro ridurlo ad icona?
Grazie e buona giornata.
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: EXCEL - creazione macro per invio automatico email

Postdi ahidai » 06/03/12 20:55

Ciao Flash, scusami non avevo letto bene il tuo post, ho risolto a metà nel senso che quando si avvia il file una volta fatto il check dei giorni si avvia Outlook 2007 e poi si chiude, aspetto circa 5-10 minuti ma l'email non parte, parte solo quando riapro Outlook 2007 manualmente e la trovo che sta nella posta di uscita di Outlook 2007.
Speriamo che si possa risolvere questo problema, poi ti chiedo se è possibile una volta fatto il check dei giorni della scadenza della pratica e una volta passati i 10 giorni si può cancellare in colonna K la condizione di email inviata con "1" in modo che mi rinvia le email quando c'è la condizione di 3 giorni o 1 giorno alla scadenza:
Codice: Seleziona tutto
If Range("E" & RR).Value = 10 Or Range("E" & RR).Value = 3 Or Range("E" & RR).Value = 1 Then

Poi è possibile ridurlo ad icona il file una volta aperto?
Grazie di nuovo e per la pazienza che avete per noi neofiti.
Ciao.
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: EXCEL - creazione macro per invio automatico email

Postdi Flash30005 » 06/03/12 21:05

Fai attenzione nella colonna K il valore 1 viene azzerato ogni volta che il giorno di scadenza non corrisponde a 10, 3, 1
quindi ammesso che apri il file e trova scadenze 10 con contatore a 0 invia l'email
il giorno dopo l'email inviata giorno precedente viene azzerata in quanto non corrisponde ad una scadenza pertanto in K troverai 0, che è la condizione valida per far partire l'email quando mancheranno 3 giorni (infatti a 3 giorni trovando 0 invia l'email e mette in K il valore 1 per evitare di effettuare altri invii nello stesso giorno, ma quando riavvierai il giorno 2 il valore K torna a 0 per poter inviare l'email quando mancherà un giorno)

spero di aver chiarito come funziona e che ogni giorno deve essere avviato il file altrimenti...

Ridurre a icona si può fare con una riga di codice ma... risolviamo un problema alla volta

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: EXCEL - creazione macro per invio automatico email

Postdi ahidai » 06/03/12 22:14

Ok Flash, sei stato chiarissimo come al solito, sorry.

Flash30005 ha scritto:Ridurre a icona si può fare con una riga di codice ma... risolviamo un problema alla volta.


Bhe in effetti ridurre ad icona è proprio l'ultimo dei problemi, il problema più grande per me è:
ahidai ha scritto: ho risolto a metà nel senso che quando si avvia il file una volta fatto il check dei giorni si avvia Outlook 2007 e poi si chiude, aspetto circa 5-10 minuti ma l'email non parte, parte solo quando riapro Outlook 2007 manualmente e la trovo che sta nella posta di uscita di Outlook 2007.


Ciao e ti ringrazio augurandoti una buona serata.
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: EXCEL - creazione macro per invio automatico email

Postdi Flash30005 » 06/03/12 23:14

Nella parte finale dell'email ci sono righe commentate
Codice: Seleziona tutto
'...
Body = BDT
.Display 'or use .send
'.SendKeys ("%(i)")
'...

dai commenti ti renderai conto che display va sostituito con
Codice: Seleziona tutto
.send
.sendKeys("%(i)")

prova perché io non ho Ms Outlook ma chi ha usato questo codice conferma l'invio

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: EXCEL - creazione macro per invio automatico email

Postdi ahidai » 06/03/12 23:35

Flash30005 ha scritto:Nella parte finale dell'email ci sono righe commentate
Codice: Seleziona tutto
'...
Body = BDT
.Display 'or use .send
'.SendKeys ("%(i)")
'...

dai commenti ti renderai conto che display va sostituito con
Codice: Seleziona tutto
.send
.sendKeys("%(i)")

prova perché io non ho Ms Outlook ma chi ha usato questo codice conferma l'invio

Ciao


Ciao Flash, ho provato ma mi da errore di run-time '438': proprietà o metodo non supportati dall'oggetto
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: EXCEL - creazione macro per invio automatico email

Postdi Flash30005 » 06/03/12 23:51

Ho appunti per diversi invii email (di programmi di posta che non ho)

prova così
Codice: Seleziona tutto
.Display
.send
End With


e 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: EXCEL - creazione macro per invio automatico email

Postdi ahidai » 07/03/12 00:09

Flash30005 ha scritto:Ho appunti per diversi invii email (di programmi di posta che non ho)

prova così
Codice: Seleziona tutto
.Display
.send
End With


e fai sapere
ciao


Grazie ancora per la tua disponibilità, ma purtroppo siamo ritornati al problema di prima
ahidai ha scritto: ho risolto a metà nel senso che quando si avvia il file una volta fatto il check dei giorni si avvia Outlook 2007 e poi si chiude, aspetto circa 5-10 minuti ma l'email non parte, parte solo quando riapro Outlook 2007 manualmente e la trovo che sta nella posta di uscita di Outlook 2007.


Ciao.
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: EXCEL - creazione macro per invio automatico email

Postdi Anthony47 » 07/03/12 00:24

La sequenza giusta e'
Codice: Seleziona tutto
.Display                         '**** NON .Send
'.SendKeys ("%(i)")
'.Attachments.Add OutFile
End With
    Application.Wait (Now + TimeValue("0:00:07"))
    Application.SendKeys "%i"        '*** QUI, non subito dopo .Display
    Application.Wait (Now + TimeValue("0:00:07"))

Guarda le righe con ***.
Per quanto riguarda Application.SendKeys "%i" non so se e' giusto "%i"; nella versione OL2003 e' %a se in Italiano e %s se in Inglese; devi verificare quando hai una mail pronta quale e' lo "shortcut" per il comando "Invia mail".

Quale e' la riga che ti va in run-time error '438'?

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: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: EXCEL - creazione macro per invio automatico email

Postdi ahidai » 07/03/12 09:30

Buongiorno a tutti, credo di aver capito qual'è il problema.
Allora con questo codice funziona:
Codice: Seleziona tutto
'.Display 'or use .send
.send
.SendKeys ("%(ì)")
'.Attachments.Add OutFile
End With
    Application.Wait (Now + TimeValue("0:00:07"))
    Application.SendKeys "%ì"
    Application.Wait (Now + TimeValue("0:00:07"))

Prima non funzionava perchè c'erano contemporaneamente l'invio di 2 o più email con la stessa scadenza o diverse "10 giorni - 3 giorni - 1 giorno" e mi dava errore di run-time '438': proprietà o metodo non supportati dall'oggetto sulla riga:
Codice: Seleziona tutto
.SendKeys ("%(ì)")

Quindi mi chiedevo se fosse possibile ovviare a questo problema e farsì che si possano inviare 2 o più email.
Ciao e buona giornata a tutti.
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: EXCEL - creazione macro per invio automatico email

Postdi ahidai » 07/03/12 11:12

Ciao a tutti, bhe non ci sto a capì più niente, non funziona più:
Codice: Seleziona tutto
'.Display 'or use .send
.send
.SendKeys ("%(ì)")
'.Attachments.Add OutFile
End With
Application.Wait (Now + TimeValue("0:00:07"))
Application.SendKeys "%ì"
Application.Wait (Now + TimeValue("0:00:07"))

e mi ridà questo errore anche con l'invio di una sola email:
Codice: Seleziona tutto
.SendKeys ("%(ì)")

Buona giornata a tutti.
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: EXCEL - creazione macro per invio automatico email

Postdi Flash30005 » 07/03/12 14:04

Mo' si! Mo no! :eeh:

Guarda che Anthony ti ha postato una diversa struttura di codice (con righe commentate che nella tua macro invece non lo sono)

Codice di Anthony:
Codice: Seleziona tutto
.Display                         '**** NON .Send
'.SendKeys ("%(i)")  '<<<<< le righe qui sono commentate mentre tu le hai attive
'.Attachments.Add OutFile
End With
    Application.Wait (Now + TimeValue("0:00:07"))
    Application.SendKeys "%i"        '*** QUI, non subito dopo .Display
    Application.Wait (Now + TimeValue("0:00:07"))

Inoltre prova anche modificando la "ì" con "s" dove descritto
Codice: Seleziona tutto
].Display                         '**** NON .Send
'.SendKeys ("%(i)")  '<<<<< le righe qui sono commentate mentre tu le hai attive
'.Attachments.Add OutFile
End With
    Application.Wait (Now + TimeValue("0:00:07"))
    Application.SendKeys "%s"        '<<<< variando a "s"
    Application.Wait (Now + TimeValue("0:00:07"))


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: EXCEL - creazione macro per invio automatico email

Postdi ahidai » 07/03/12 17:31

Finalmente funziona!!!!!! Che confusionario che sono :-?
Allora così funziona ma non si attiva la funzione "display" (non è un problema per quanto mi riguarda):
Codice: Seleziona tutto
'.Display  'or use .send
.Send
'.SendKeys ("%(i)")
'.Attachments.Add OutFile
End With
    Application.Wait (Now + TimeValue("0:00:07"))
    Application.SendKeys "%i"        '*** QUI, non subito dopo .Display
    Application.Wait (Now + TimeValue("0:00:07"))


Invece così si attiva la funzione "display" ma mi rimane in memoria l'email e non parte da sola ma solo se attivo manualmente Outlook 2007:
Codice: Seleziona tutto
.Display  'or use .send
'.SendKeys ("%(i)")
'.Attachments.Add OutFile
End With
    Application.Wait (Now + TimeValue("0:00:07"))
    Application.SendKeys "%i"        '*** QUI, non subito dopo .Display
    Application.Wait (Now + TimeValue("0:00:07"))


Per terminare questo progetto che stringa bisogna inserire per ridurre ad icona il file.
Grazie mille e scusatemi per il tempo che vi ho fatto perdere.
Ciao.
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

PrecedenteProssimo

Torna a Applicazioni Office Windows


Topic correlati a "EXCEL - creazione macro per invio automatico email":


Chi c’è in linea

Visitano il forum: Nessuno e 11 ospiti