Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Macro excel con invio mail automatico

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

Macro excel con invio mail automatico

Postdi walterix » 24/03/09 10:21

Buon giorno, sono nuovo di questo forum, e mi sembra che sia serio e competente, quindi sono ad esporvi un problema con una macro excel, che non riesco a "terminare".
vorrei che al verificarsi di una certa condizione, ad esempio che su una cella di una colonna B se il valore è superiore a 10, con un bottone, venga inviato via mail ad un indirizzo predefinito, il valore della colonna A.
Mi potete aiutare?
Grazie
walterix
Newbie
 
Post: 3
Iscritto il: 24/03/09 08:38

Sponsor
 

Re: Macro excel con invio mail automatico

Postdi Anthony47 » 26/03/09 15:20

Ciao walterix e benvenuto nel forum.
Prima di provare a cimentarmi vorrei sapere quale software usi per l' invio della posta, e se per "una cella di una colonna B" intendi un indirizzo specifico o una qualsiasi cella della colonna B e se con "il valore della colonna A" intendi il valore della cella in colonna A allineata alla cella controllata in colonna B o invece tutto il contenuto di col A, da A1 ad Ann (nn=ultima cella piena).

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: Macro excel con invio mail automatico

Postdi walterix » 26/03/09 16:45

ciao Anthony47, grazie intanto. :P
l'ideia e questa, due colonne su excel. colonna A ci scrivo dentro un dato, associato ad una data della colonna B, dopo un controllo di scadenza, es se dentro la colonna B metto 15/05/2009 vorrei mettere una condizione che se la data scritta è minore di novanta gg da quella attuale, in automatico mi parta una mail (microsoft outlook), al cui interno del corpo, mi venga riportato quello che c'è scritto sulla colonna A....
grazie :D :D :D :D
walterix
Newbie
 
Post: 3
Iscritto il: 24/03/09 08:38

Re: Macro excel con invio mail automatico

Postdi Anthony47 » 27/03/09 00:09

Non hai aggiunto molto, cosi' ti propino quello che sono capace a fare...
Questa macro invia una mail a un destinatario da impostare, con corpo della mail l' elenco delle voci (col A) e relativa scadenza (col B); le voci marcate <<<< sono quelle da personalizzare. Mettila in un Modulo del vba e poi la associ a un pulsante.

Codice: Seleziona tutto
Sub SMAIL()
Dim OLook As Object 'Outlook.Application
Dim MItem As Object 'Outlook.MailItem
'Dim FSend As Boolean 'Flag "Send"
Dim Inter As String, CScad As Integer
Dim MAddr As String, MSubj As String

MSubj = "Warning su scadenza" '<<<< Subject della mail
MAddr = "aaaaaa@dominio.it"   '<<<< Destinatario
Inter = "B4:B50"    '<<<< Lista delle celle che saranno controllate per scadenza
'
For Each Scad In Range(Inter)
If Scad < (Int(Now) + 90) Then
CScad = CScad + 1
Mex = Mex & Scad.Row & "  /  " & Scad.Offset(0, 1).Value & _
     Format(Scad.Value, "yyyy-mmm-dd") & vbCrLf
End If
Next Scad
MsgBox ("Ci sono " & CScad & " scadenze inferiori a " & (Int(Now) + 90))
'
If CScad = 0 Then Exit Sub
'
Set OLook = CreateObject("Outlook.Application")
Set MItem = OLook.createitem(0)
MItem.to = MAddr
MItem.Subject = MSubj
MItem.body = "Scadenza voce: riga / voce / data " & vbCrLf & Mex
MItem.send
Application.Wait (Now + TimeValue("0:00:10"))
Set OLook = Nothing
Set MItem = Nothing
End Sub

Se ti servono istruzioni piu' dettagliate posta ancora; comunque fai sapere.
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: Macro excel con invio mail automatico

Postdi walterix » 27/03/09 08:17

grazie Anthony47, porvo adesso e ti faccio sapere :)
walterix
Newbie
 
Post: 3
Iscritto il: 24/03/09 08:38

Re: Macro excel con invio mail automatico

Postdi simpatix » 09/03/12 16:18

Ciao Anthony,
in merito al tuo script per inviare mail dopo un controllo in un file excel,
come posso inserire oltre alla riga e alla data,anche il campo inerente all'attività da eseguire in merito alla scadenza?
Che corrisponde alla colonna successiva alla data che mi viene inviata via mail?

Ti ringrazio e grazie ancora per l'ottimo script!!
Simpatix
simpatix
Newbie
 
Post: 4
Iscritto il: 09/03/12 16:14

Re: Macro excel con invio mail automatico

Postdi Anthony47 » 10/03/12 00:58

All' utente viene inviata una mail il cui testo e' calcolato nella variabile Mex con l' istruzione
Codice: Seleziona tutto
    Mex = Mex & Scad.Row & "  /  " & Scad.Offset(0, 1).Value & _
         Format(Scad.Value, "yyyy-mmm-dd") & vbCrLf

Se la data e' in col B, questa istruzione dovrebbe inserire la data e il contenuto della colonna C, che se non ho capito male e' quello che vuoi tu. Insomma dovrebbe essere ok cosi'.

O no?

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: Macro excel con invio mail automatico

Postdi simpatix » 12/03/12 08:21

Si così è corretto grazie.
Ma se avessi per caso l'attività in una colonna non successiva alla data?

Grazie
Simpatix
simpatix
Newbie
 
Post: 4
Iscritto il: 09/03/12 16:14

Re: Macro excel con invio mail automatico

Postdi Anthony47 » 12/03/12 09:14

Se l' attivita' e' in una colonna "diversa" rispetto a quanto descritto allora dovrai usare una istruzione "diversa" da quella citata; per qualche altro dettaglio potrebbe aiutare sapere dove si trova effettivamente l' attivita' rispetto alla data...

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: Macro excel con invio mail automatico

Postdi simpatix » 12/03/12 13:27

Ok Anthony,
grazie per il supporto.

Diciamo che la data di scadenza è sulla colonna H4 mentre il dettaglio dell'attività è nella colonna D.
In questo momento ho risolto il problema nascondendo nella colonna successiva alla data l'attività descritta nella colonna D.

Ciao
simpatix
Newbie
 
Post: 4
Iscritto il: 09/03/12 16:14

Re: Macro excel con invio mail automatico

Postdi Anthony47 » 12/03/12 15:10

Con la data in col H e la descrizione in col D modificherai l' offset come segue:
Codice: Seleziona tutto
    Mex = Mex & Scad.Row & "  /  " & Scad.Offset(0, -4).Value & _
         Format(Scad.Value, "yyyy-mmm-dd") & vbCrLf

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: Macro excel con invio mail automatico

Postdi simpatix » 13/03/12 09:31

Grazie Anthony.
Era proprio quello che cercavo.
Ancora grazie per il supporto e per l'ottimo forum!!!
simpatix
Newbie
 
Post: 4
Iscritto il: 09/03/12 16:14

Re: Macro excel con invio mail automatico

Postdi sinner69 » 03/06/12 21:16

Ciao, sono nuovo del forum e anche io avrei un problemino con l'invio automatico di una email tramite excel.
Ho uilizzato il codice riportato negli altri messaggi della discussione inserendolo nel ThisWorkbook però ho un problema così facendo la macro scatta in automatico solo per il foglio che viene visualizzato all'apertura del file, come faccio a far controllare anche gli altri fogli?

esempio:
ipotizziamo che nel mio file excel ho tre fogli A, B, C e io il controllo della data e l'invio dell'email lo devo fare sia sul foglio B che sul foglio C all'apertura del file indipendentemente quale sia il foglio che che viene visualizzato all'epertura del file e la data da controllare nei due fogli sta in colenne diverse come faccio ? potresti aiutarmi a risolvere ??
A Buon Rendere...
Avatar utente
sinner69
Utente Junior
 
Post: 44
Iscritto il: 03/06/12 20:59
Località: Avola

Re: Macro excel con invio mail automatico

Postdi Anthony47 » 04/06/12 13:45

Ciao sinner69, benvenuto nel forum.
La macro di cui si parla nella discussione non scatta automaticamente ma ha bisogno di essere lanciata.
Comunque se vuoi controllare le scadenze in piu' fogli, nell' ipotesi che l' area da controllare sia la stessa sui vari fogli, puoi modificare la prima parte della macro come segue:
Codice: Seleziona tutto
Sub SMAILZZ()
Dim OLook As Object 'Outlook.Application
Dim MItem As Object 'Outlook.MailItem
Dim FSend As Boolean 'Flag "Send"
Dim Inter As String, CScad As Integer
Dim MAddr As String, MSubj As String

MSubj = "Warning su scadenza" '<<<< Subject della mail
MAddr = "aaaaaa@dominio.it"   '<<<< Destinatario
Inter = "A1:A100"    '<<<< Lista delle celle che saranno controllate
ListaF = Array("A", "B", "C")   '<<< Elenco Fogli da controllare
For Each LF In ListaF
Sheets(LF).Select
For Each scad In Range(Inter)
    If scad <> "" Then
        If scad < (Int(Now) + 90) Then
            CScad = CScad + 1
            Mex = Mex & scad.Row & "  /  " & scad.Offset(0, 1).Value & _
                 Format(scad.Value, "yyyy-mmm-dd") & vbCrLf
        End If
    End If
Next scad
Next LF
'Da qui prosegue la precedente macro:
MsgBox ("Ci sono " & CScad & " scadenze inferiori a " & (Int(Now) + 90))
'

Ciao, fai sapere se e' idoneo al tuo caso.
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: Macro excel con invio mail automatico

Postdi sinner69 » 05/06/12 23:12

Ciao, Grazie domani provo e ti faccio sapere. ;)
A Buon Rendere...
Avatar utente
sinner69
Utente Junior
 
Post: 44
Iscritto il: 03/06/12 20:59
Località: Avola

Re: Macro excel con invio mail automatico

Postdi sinner69 » 08/06/12 13:57

Ciao Anthony47,
volevo chiederti una conferma: poichè ho la necessita che la lista delle celle da controllare
nei vari figli stanno in posizione diversa, potrei fare come segue ?


Inter = "A1:A100" '<<<< Lista delle celle che saranno controllate
ListaF = Array("A", "B", "C") '<<< Elenco Fogli da controllare
For Each LF In ListaF
if (Sheets(LF).Select = A)then
Inter = "A1:A100"
if (Sheets(LF).Select = B) then
Inter = "B1:B100"
if (Sheets(LF).Select = C) then
Inter = "C1:C100"

il resto uguale alla procedura..............
Grazie ciao
A Buon Rendere...
Avatar utente
sinner69
Utente Junior
 
Post: 44
Iscritto il: 03/06/12 20:59
Località: Avola

Re: Macro excel con invio mail automatico

Postdi Anthony47 » 08/06/12 14:53

L' idea e' buona, la sintassi un po' meno...

Codice: Seleziona tutto
For Each LF In ListaF     '<<< Esistente
'AGGIUNTE
If LF = "A" Then
Inter = "A1:A100"
ElseIf LF = "B" Then
Inter = "B1:B100"
ElseIf LF = "C" Then
Inter = "C1:C100"
End If
'Fine Aggiunte
'Continua...

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: Macro excel con invio mail automatico

Postdi sinner69 » 08/06/12 16:49

Grazie mille
ma non conoscendo il linguaggio mi viene difficile ad azzeccare la sintassi eheheh
A Buon Rendere...
Avatar utente
sinner69
Utente Junior
 
Post: 44
Iscritto il: 03/06/12 20:59
Località: Avola

Re: Macro excel con invio mail automatico

Postdi sinner69 » 09/06/12 16:04

Ciao Anthony47,
ho provato ha inserire questo codice:

Codice: Seleziona tutto
Sub invia_email_Click()
Dim OLook As Object 'Outlook.Application
Dim MItem As Object 'Outlook.MailItem
'Dim FSend As Boolean 'Flag "Send"
Dim Inter As String, CScad As Integer
Dim MAddr As String, MSubj As String
Dim foglio As String
foglio = Cells(2, 16).Value
MSubj = "Warning scadenza" & " " & foglio '<<<< Subject della mail

MAddr = "nominativo@gmail.com"   '<<<< Destinatario
Inter = "G3:G100"    '<<<< Lista delle celle che saranno controllate per scadenza
'
ListaF = Array("Foglio7", "Foglio6")   '<<<ElencoFogli da controllare
For Each LF In ListaF
    Sheets(LF).Select
    If LF = "Foglio7" Then
        ListaC = Array("G3:G100", "K3:K100", "O3:O100") '<<< Elenco celle da controllare
        For Each LC In ListaC
            For Each scad In Range(Inter)
                If scad <> "" Then
                If scad <= (Int(Now) + 6) And scad >= Int(Now) Then
                    CScad = CScad + 1
                     Mex = Mex & scad.Row & "  /  " & scad.Offset(0, -3).Value & " " & " Data prima scad. : " & Format(scad.Value, "dd/mm/yyyy") & vbCrLf
                End If
                End If
            Next scad
        Next LC
    ElseIf LF = "Foglio6" Then
        Inter = "G3:G100"
        For Each scad In Range(Inter)
                If scad <> "" Then
                If scad <= (Int(Now) + 6) And scad >= Int(Now) Then
                    CScad = CScad + 1
                     Mex = Mex & scad.Row & "  /  " & scad.Offset(0, -3).Value & " " & " Data prima scad. : " & Format(scad.Value, "dd/mm/yyyy") & vbCrLf
                End If
                End If
        Next scad
    End If
Next LF
MsgBox ("Ci sono " & CScad & " righe alla prima scadenza inferiore al " & (Int(Now) + 6) & " del foglio: " & foglio)
'
If CScad > 0 Then
'
Set OLook = CreateObject("Outlook.Application")
Set MItem = OLook.createitem(0)
MItem.to = MAddr
MItem.Subject = MSubj
MItem.body = "Scadenza voce: riga / Cliente / data " & vbCrLf & Mex
MItem.send
Application.Wait (Now + TimeValue("0:00:10"))
Set OLook = Nothing
Set MItem = Nothing
End If

End Sub


Poiche ho due foglio da controllare foglio6 e foglio7 nel foglio7 le colonne da controllare per la scadenza sono tre "G3:G100", "K3:K100", "O3:O100" mentre nel foglio6 devo soltanto la colonna G3:G100 però come eseguo il codice mi da errore di roun time '9'
indice non incluso nell'intervallo non capisco dove sbaglio.. puoi darci un occhiata cortesemente.
Grazie
A Buon Rendere...
Avatar utente
sinner69
Utente Junior
 
Post: 44
Iscritto il: 03/06/12 20:59
Località: Avola

Re: Macro excel con invio mail automatico

Postdi sinner69 » 09/06/12 22:59

ciao ho corretto
ListaF = Array("Foflio7", "Foglio6") '<<<ElencoFogli da controllare
For Each LF In ListaF

con

ListaF = Array("Per Cantiere", "Scadenze Preventivi") '<<<ElencoFogli da controllare
For Each LF In ListaF

e
For Each LC In ListaC
For Each scad In Range(Inter)

con
For Each LC In ListaC
For Each scad In Range(LC)

adesso non da l'errore, però la procedura non fa quello che dovrebbe fare nel senso eseguendola
uno il file si apre sempre visualizzando il foglio Scadenze Preventivi e non controlla anche le scadenze del foflio Per Cantieri e inoltre controlla solo le scadenze della colonna G3:G100 del foglio Scadenze Preventivi... non so come fare a correggerlo.. HELP ME....
A Buon Rendere...
Avatar utente
sinner69
Utente Junior
 
Post: 44
Iscritto il: 03/06/12 20:59
Località: Avola

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Macro excel con invio mail automatico":


Chi c’è in linea

Visitano il forum: Nessuno e 20 ospiti