Condividi:        

Excel : avviso scadenza data excel tramite mail

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

Excel : avviso scadenza data excel tramite mail

Postdi allen747 » 04/09/13 14:03

Buongiorno a tutti,

ho un file in excel composto da più fogli , in ognuno dei quali ho un elenco di giocatori e i loro dati.
Nella colonna”D” di ogni foglio ci sono inserire le date di scadenza delle visite mediche.
Mi piacerebbe che circa 7/10 giorni excel creasse un avviso di scadenza inviandolo via e- mail con i dati dell’atleta che deve eseguire il rinnovo.
Questo avviso deve continuare a funzionare fino a quando l’utente non conferma l’avvenuto rinnovo.
Mi piacerebbe ,se non è troppo, ma non ho idea di come si possa fare,che questa cosa possa avvenire direttamente dalla mail , dove inserendo la data del rinnovo questa vada ad aggiornare la colonna del file in excel.
se mi dite come posso inviarvi il file di esempio

Grazie in anticipo a chi potrà aiutarmi.


Ale.
allen747
Utente Junior
 
Post: 13
Iscritto il: 04/05/11 15:38

Sponsor
 

Re: Excel : avviso scadenza data excel tramite mail

Postdi Flash30005 » 05/09/13 02:12

Per la prima parte qualcosa è possibile fare, anzi già è stato fatto
per la seconda (agire da email per aggiornare Excel) penso sia molto ma molto complicato

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel : avviso scadenza data excel tramite mail

Postdi allen747 » 05/09/13 06:55

ok, grazie.
la seconda richiesta è un di più, a me interesserebbe poter realizzare la prima parte della mia richiesta.
Grazie
allen747
Utente Junior
 
Post: 13
Iscritto il: 04/05/11 15:38

Re: Excel : avviso scadenza data excel tramite mail

Postdi allen747 » 10/09/13 12:53

Un auitino ... !!! Please !
allen747
Utente Junior
 
Post: 13
Iscritto il: 04/05/11 15:38

Re: Excel : avviso scadenza data excel tramite mail

Postdi Anthony47 » 11/09/13 21:20

Non ho capito se la mail e' verso un indirizzo particolare con l' elenco delle prossime scadenze, o se ogni atleta ha la sua mail e il sollecito va inviato a lui stesso.
Vorrei anche sapere se come programma di posta usi un software dotato di "libreria vba" (quindi in grado di supportare l' automazione tramite macro), come ad esempio Outlook di Microsoft.
In ogni caso potrebbe aiutare un file con un paio di fogli di dati simili a quelli reali.

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

Re: Excel : avviso scadenza data excel tramite mail

Postdi allen747 » 12/09/13 13:31

Buongiorno Anthony e grazie per l’attenzione.
La mail deve essere spedita ad un solo indirizzo.
Come programma utilizziamo Microsoft Outlock.
Il file di esempio come faccio a mandartelo ?
Grazie !!!
allen747
Utente Junior
 
Post: 13
Iscritto il: 04/05/11 15:38

Re: Excel : avviso scadenza data excel tramite mail

Postdi Anthony47 » 12/09/13 14:42

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

Re: Excel : avviso scadenza data excel tramite mail

Postdi allen747 » 12/09/13 22:19

ecco il link del file.
Grazie !

http://www.filedropper.com/senzatitolo

Ciao
allen747
Utente Junior
 
Post: 13
Iscritto il: 04/05/11 15:38

Re: Excel : avviso scadenza data excel tramite mail

Postdi Anthony47 » 13/09/13 01:22

Allora...
Ho preparato due macro
1-Questa crea l' elenco delle scadenze, in un foglio chiamato "InScadenza" che deve gia' esistere
Codice: Seleziona tutto
Sub CreaList()
Dim I As Long, LastA As Long, J As Long, Preavv As Long, NextLn As Long
Dim RiepSh As String, ChKey As String, myData
'
RiepSh = "InScadenza"   '<< Nome foglio su cui costruire le "in scadenza"
Preavv = 10              '<< Preavviso in Numero di gg rispetto a Scadenza visita

Sheets(RiepSh).Range("A:L").ClearContents
myData = Date
For I = 1 To ThisWorkbook.Worksheets.Count
    If Sheets(I).Name <> RiepSh Then
        Sheets(I).Select
            ChKey = [A2] & [B2] & [C2] & [D2]
        If ChKey = "Cat.Cognome NomeScadenza visita medica" Then
            LastA = Range("A2").CurrentRegion.Rows.Count + 1
            If Sheets(RiepSh).Range("A1").CurrentRegion.Columns.Count < 3 Then
                Range("A2:K2").Copy Destination:=Sheets(RiepSh).Range("B1")
                Sheets(RiepSh).Range("A1") = "Vedi Foglio"
            End If
            For J = 2 To LastA
                If myData + Preavv >= Cells(J, "D") And Cells(J, "E") = "" Then
                    NextLn = Sheets(RiepSh).Cells(Rows.Count, 1).End(xlUp).Row + 1
                    Sheets(RiepSh).Cells(NextLn, 1) = ActiveSheet.Name
                    Cells(J, 1).Resize(1, 11).Copy Destination:=Sheets(RiepSh).Cells(NextLn, 2)
                End If
            Next J
        End If
    End If
Next I
Sheets(RiepSh).Select
End Sub

2-Quest' altra invece invia via email il foglio "InScadenza" all' indirizzo specificato:
Codice: Seleziona tutto
Sub SendList()
'Crea copia del foglio in Temp
ActiveSheet.Copy
TempFile = Environ$("temp") & "\pippozczc.xls"   'Salva in Temp un file pippozczc.xls
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=TempFile, _
        FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
Application.DisplayAlerts = True
Workbooks("pippozczc.xls").Close savechanges:=False
'
'Codice per l' invio email
Dim OutApp As Object
Dim OutMail As Object
Dim EmailAddr As String
Dim Subj As String
Dim BodyText As String                      'FIN QUI SONO "DICHIARAZIONI"
'
EmailAddr = "nome@dominio.it"      '<< INDIRIZZO a cui inviare la mail"
'
'  (a)
Set OutApp = CreateObject("Outlook.Application")
''compilazione di un testo standard di accompagnamento   'LA VARIABIE BDT VIENE COMPILATA CON UN TESTO STANDARD
BDT = "Si trasmette l' elenco dei nominativi con visita medica in scadenza"
BDT = BDT & vbCrLf & "Cordiali saluti" & vbCrLf
BDT = BDT & "Dr Jekill"
''  (b)
'Nominat = Sheets("Scheda").Range("C5").Value
OutFile = Environ$("temp") & "\pippozczc.xls"     'NOME DEL FILE ALLEGATO;
Subj = "Elenco visite mediche in scadenza"    'OGGETTO DELLA MAIL
'
Set OutMail = OutApp.CreateItem(0)     'DA QUI SI CREA E INVIA LA MAIL
With OutMail
.To = EmailAddr
.CC = ""
.BCC = ""
.Subject = Subj
.Attachments.Add OutFile
.Body = BDT
.Display 'or use .send
'.send
End With
'  (c)
Set OutMail = Nothing
'
'  (d)
Set OutApp = Nothing
    Application.Wait (Now + TimeValue("0:00:04"))
    Application.SendKeys "%a"
    Application.Wait (Now + TimeValue("0:00:04"))
'
End Sub

Il codice per l' invio email, tra le tante discussioni in cui e' stato proposto l' ho prelevato qui:
viewtopic.php?t=93621#p535678

Uso:
1) da Excel, Alt-F11 per aprire l' editor delle macro
2) Menu /Inserisci /Modulo
3) copia il codice di ambedue le macro e incollalo nel frame di dx
4) compila come da tuoi parametri le 3 istruzioni marcate <<
5) torna su excel nel foglio InScadenza e disegna due Pulsanti (trovi questa forma nella barra degli strumenti Moduli)
6) Associa la macro CreaList al primo pulsante (ti sara' fatta una domanda specifica durante la creazione del pulsante) e SendList al secondo pulsante.

Volendo potresti mettere una macro di Workbook_Open che contenga una "Call CreaList", e quindi creare l' elenco automaticamente all' apertura del file, ma in ogni caso devi prevedere di poter rilanciare a tuo piacimento la macro, ad esempio perche' ti accorgi che l' elenco non e' aggiornato (es atleti che hanno gia' fatto la visita ma senza che il file sia stato aggiornato)

Fai sapere, ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel : avviso scadenza data excel tramite mail

Postdi allen747 » 13/09/13 08:13

Grande ...funziona !!!
trascinato dall'entusiasmo mi permetto di chiederti ancora un paio di info ....
Sarebbe veramente utile che la mail venisse creata e spedita automaticamente, una volta al giorno.
Credo che il file però debba essere aperto manualmente... eventualmente inserirlo in esecuzione automatica in modo che si possa aprire al'avvio del pc potrebbe funzionare ?
Scusami se esagero , ma è possibile inviare il file in formato pdf anzichè in esxcel ?
Grazie per la pazienza.
allen747
Utente Junior
 
Post: 13
Iscritto il: 04/05/11 15:38

Re: Excel : avviso scadenza data excel tramite mail

Postdi Anthony47 » 13/09/13 23:50

Mi sono sempre rifiutato di creare un meccanismo automatico che potrebbe anche essere alla base dell' invio di mail indesiderate; lo faccio anche questa volta :D
Pero' non e' difficile farlo: salvi la data dell' invio mail in una cella di InScadenza (fuori dalle colonne A:L, che vengono azzerate dalla macro); modifichi la Sub SendList per inserire, in testa a tutto, il test che la data corrente sia superiore a quanto memorizzato; avvii le macro nella Workbook_Open.
Se lo sai fare significa che hai il pieno controllo di quello che succede sul tuo pc e il rischio che paventavo all' inizio e' nullo.

Per quanto riguarda l' invio di un pdf, dovresti indicare quele versione di office usi (istruzioni nella mia firma).

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

Re: Excel : avviso scadenza data excel tramite mail

Postdi allen747 » 16/09/13 06:58

ok provo a fare come mi hai spiegato ...
La versione che utilizzo è office 2007.
Grazie
allen747
Utente Junior
 
Post: 13
Iscritto il: 04/05/11 15:38

Re: Excel : avviso scadenza data excel tramite mail

Postdi Anthony47 » 17/09/13 01:37

Credo che XL2007 consenta direttamente il salvataggio in formato pdf; quindi
-registra una macro mentre salvi un file excel in formato "pdf" con un nome qualsiasi

Vai nella Sub SendList, e sostituisci
1- la riga
TempFile = Environ$("temp") & "\pippozczc.xls" 'Salva in Temp un file pippozczc.xls con

TempFile = Environ$("temp") & "\pippozczc.pdf" 'Salva in Temp un file pippozczc.pdf

2- le righe
ActiveWorkbook.SaveAs Filename:=TempFile, _
FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False

con quelle ottenute dalla registrazione; l' unica variazione e' la sostituzione di tutta la stringa col nome file assegnato (apici compresi) con la variabile TempFile

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

Re: Excel : avviso scadenza data excel tramite mail

Postdi matzap » 14/04/14 15:47

Ciao, sto provando a utilizzare il codice per inviare la mail in automatico, ma dovrei farla inviare da Lotus Notes ( già aperto sul mio PC) ma non riesco poichè mi da questo errore:

Immagine
bilder upload

Come posso fare?

ciao a tutti
excel 2010
matzap
Utente Senior
 
Post: 246
Iscritto il: 16/04/13 08:27

Re: Excel : avviso scadenza data excel tramite mail

Postdi Anthony47 » 15/04/14 00:54

Immagino che hai provato a usare la Sub SendList... Ma quella macro usa la Microsoft Outlook XX Object Library, che ovviamente colloquia con Microsoft Outlook, non con Lotus Notes.
So cheLotus Notes ha una sua libreria di interfacciamento col vba, quindi l' automazione e' possibile.

Se fai una ricerca google con la stringa "send email via lotus notes vba" credo che troverai parecchi suggerimenti

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

Re: Excel : avviso scadenza data excel tramite mail

Postdi matzap » 15/04/14 11:02

Ciao Anthony,
ho trovato questa macro, che impostando Recipient = indirizzo mail manda la mail e funziona:
Sub invio_mail()


Dim Maildb As Object 'The mail database
Dim UserName As String 'The current users notes name
Dim MailDbName As String 'The current users notes mail database name
Dim MailDoc As Object 'The mail document itself
Dim AttachME As Object 'The attachment richtextfile object
Dim Session As Object 'The notes session
Dim EmbedObj As Object 'The embedded object (Attachment)
Dim Subject As String 'The subject string
Dim Attachment As String 'The path to the attachemnt string
Dim Recipient As String 'The Recipient string (or you could use the list)
Dim Recip(10) As Variant 'The Recipient list
Dim BodyText As String 'The body text
Dim SaveIt As Boolean 'Save to sent mail
Dim WasOpen As Integer 'Checking to see if the Mail DB was already
'open to determine if session should be
'closed (0) or left alone (1)
'Dim ClipBoard As DataObject 'Data object for getting text from clipboard
Subject = "This is a Test Email Messag"
Recipient = "Username" 'pying it to Clipboard

'Sheets("Sheet1").Select
'Range("A5:G19").Select
'Selection.Copy
'Set ClipBoard = New DataObject
'ClipBoard.GetFromClipboard
'SaveIt = True
Set Session = CreateObject("Notes.NotesSession")
UserName = Session.UserName
MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf"
Set Maildb = Session.GETDATABASE("", MailDbName)
If Maildb.IsOpen = True Then
WasOpen = 1 'Already open for mail
Else
WasOpen = 0
Maildb.OPENMAIL 'This will prompt you for password
End If
Set MailDoc = Maildb.CREATEDOCUMENT
MailDoc.Form = "Memo"
MailDoc.sendto = Recip 'Or use Recip(10) for multiple
MailDoc.Subject = Subject
'MailDoc.body = ClipBoard.GetText(1)
MailDoc.SAVEMESSAGEONSEND = SaveIt
If Attachment <> "" Then
Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment")
Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment, "Attachment")
MailDoc.CREATERICHTEXTITEM ("Attachment")
End If
MailDoc.PostedDate = Now() 'Gets the mail to appear in the sent items folder
MailDoc.SEND 0, Recipient
'Clean Up'
Range("A1").Select
Application.CutCopyMode = False
Set Maildb = Nothing
Set MailDoc = Nothing
Set AttachME = Nothing
Set EmbedObj = Nothing
If WasOpen = 1 Then
Set Session = Nothing
ElseIf WasOpen = 0 Then
Session.Close
Set Session = Nothing
End If

MsgBox "The Line Down Email was sent", vbOKOnly

End Sub

Tuttavia usando recipient posso inviarla a un solo indirizzo mentre se usassi come si dice nei commenti Recip, potrei inviarla a una lista di indirizzi. Non riesco però a capire come impostare la lista.
puoi aiutarmi?
ciao
excel 2010
matzap
Utente Senior
 
Post: 246
Iscritto il: 16/04/13 08:27

Re: Excel : avviso scadenza data excel tramite mail

Postdi Bobo55 » 17/04/14 08:34

Buongiorno,
sono un completo neofita di Excel e mi chiedevo se potevate aiutarmi con un problema simile a quello di Allen747.
Dovrei creare una check-list automatizzata per Ambulanza.Ho un file con nella colonna A partendo da A5 in poi vari presidi (siringa, fiosiologica ecc.), nella colonna B da B5 poi la quantita' , nella colonna C da C5 in poi le relative scadenze.
Avrei bisogno che all'avvicinarsi a 20gg dalla scadenza, Excel invii una mail a piu' destinatari ricordando la scadenza dell'articolo "pincopallino".Grazie comunque
Bobo55
Newbie
 
Post: 4
Iscritto il: 17/04/14 07:51

Re: Excel : avviso scadenza data excel tramite mail

Postdi Bobo55 » 19/04/14 11:47

Nessuno mi puo' dare un aiuto?Grazie
Bobo55
Newbie
 
Post: 4
Iscritto il: 17/04/14 07:51

Re: Excel : avviso scadenza data excel tramite mail

Postdi Anthony47 » 23/04/14 00:53

Ciao Bobo55, benvenuto nel forum.
Visto che sei alle prime armi (almeno questo per me e' il significato di Neofita) ti propongo una soluzione non automatizzata:
-In una cella libera del tuo foglio, ad esempio E1, calcoli la data odierna con la formula =Oggi()
-In C5 hai la prima scadenza; in D5 calcoli i giorni mancanti con la formula =C5-$E$1
-In altre celle libere, ad esempio G1, G2 e G3 inserisci gli indirizzi email delle persone che vuoi che ricevano la mail (puoi scrivere anche piu' indirizzi nella stessa cella, separandoli con "punto-e-virgola")
-In altre celle libere, ad esempio H1 e H2, inserisci un breve testo per la mail.
-In F5 scrivi la formula
Codice: Seleziona tutto
=COLLEG.IPERTESTUALE("mailto:"&$G$1&","&$G$2&","&$G$3&"?subject="&"Scadenza "&$A$5&"&body="&($H$1&CODICE.CARATT(10)&$H$2);"Email")

-Copi D5:F5 verso il basso, per quanti presidi hai in colonna A

Infine selezioni le celle da D4 verso il basso e applichi il Filtro Automatico

A questo punto puoi selezionare la freccina del filtro automatico e impostare il filtro per (Personalizzato) "minore o uguale a" 20.

In questo modo vedrai solo le righe che hanno una scadenza inferore o uguale a 20 gg; premendo la scritta "Email" di colonna F si aprira' una mail con impostati i destinatari, il Subject e il Body della mail. Puoi aggiungere un tuo appunto, ad esempio "sollecito" se c' era gia' stata una mail, e la invii premendo Invia.

A questo punto prenderai nota in colonna G che hai inviato una mail in data xx-yy per evitare di reinviare la mail il giorno dopo.
Ripeti l' invio di mail per le altre voci in scadenza.

So che e' meno di quello che avevi chiesto...

Ciao, fai sapere.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel : avviso scadenza data excel tramite mail

Postdi Bobo55 » 24/04/14 14:11

Ciao Anthony47, grazie mille per la risposta l'unico problema mi si verifica in D5 dove avevi detto di inserire " =C5-$E$1 " ....una volta inserito mi da un errore cosi' " #VALORE! " ....per tutto il resto veramente grazie...
Bobo55
Newbie
 
Post: 4
Iscritto il: 17/04/14 07:51

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Excel : avviso scadenza data excel tramite mail":


Chi c’è in linea

Visitano il forum: Gianca532011 e 62 ospiti