Condividi:        

[EXCEL-OUTLOOK 2013] Macro per invio e-mail scadenzario

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-OUTLOOK 2013] Macro per invio e-mail scadenzario

Postdi geronimo91 » 20/08/15 12:01

Buongiorno,
premetto che ho ampiamente spulciato questo ottimo forum ma essendo a digiuno di VBA e macro, trovo difficoltà nell'adattare le varie guide alla mia situazione.

Sto curando uno scadenzario degli automezzi ed attrezzature presenti in cantiere, compresi quelli dei subappaltatori.
Ho la necessità di ricevere una mail come promemoria alla mia stessa casella di posta elettronica a 7 giorni dalla scadenza delle assicurazioni e dei bolli.
Programmi utilizzati: Excel 2013 e Outlook 2013
La difficoltà che riscontro è legata al fatto che ci sono tante pagine diverse per ogni subappaltatore; inoltre le caselle da prendere in considerazione sono due e non una sola:

Immagine

Quindi, le funzioni che mi servono sono:
1) Invio mail a -7 giorni dalla scadenza dell' assicurazione (colonna H) e del libretto (colonna G) e che ciò sia valido per ciascuna delle pagine (sono tutte strutturate allo stesso modo);
2) testo della mail che comprenda nome veicolo, targa/matricola e che specifichi se sta per scadere il bollo o l' assicurazione (quest'ultima cosa se si può, altrimenti metterò un avviso generale "controlla scadenza bollo/assicurazione");
3) mi interesse sapere se questo processo possa avvenire anche automaticamente (cosa abbastanza superflua, mi servirebbe solo comprenderlo per un eventuale utilizzo futuro);
4) Potreste dirmi come inserire il comando per inviare una mail per un'eventuale altra scadenza (verifica di sollevamento)? Perché è possibile che in futuro mi possa servire anche comunicare questa informazione.


Vi ringrazio in anticipo e spero di essere stato abbastanza chiaro :D
geronimo91
Newbie
 
Post: 3
Iscritto il: 20/08/15 11:07

Sponsor
 

Re: [EXCEL-OUTLOOK 2013] Macro per invio e-mail scadenzario

Postdi Anthony47 » 20/08/15 21:59

Ciao geronimo91, benvenuto nel forum.
Dalla tua immagine non si capisce quali sono le colonne con le date da ispezionare; ho supposto la G e la H
Poi assumo che tutti i fogli siano assolutamente simili...
Cio' detto, partendo dal codice di una delle tante "Sub InvioEmail" il codice che dovrebbe andare bene per te e' questo:
Codice: Seleziona tutto
Sub Invioemail33()
'Vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=105254
Dim OutApp As Object, OutMail As Object
Dim EmailAddr As String, Subj As String
Dim BDT As String, I As Long, myCnt As Long, Elenco, FogliO           'FIN QUI E' SONO "DICHIARAZIONI"
'  (a)
Elenco = Array("Ditta1", "Ditta2", "Ditta3")        '<<< L'elenco dei fogli in cui cercare
'
BDT = "Elenco automezzi in scadenza al " & Format(Date, "yyyy-mmm-dd") & vbCrLf

For Each FogliO In Elenco
BDT = BDT & vbCrLf & vbCrLf & "SCADENZE DAL FOGLIO " & FogliO
    Sheets(FogliO).Select                               
'compilazione del testo della mail
    For I = 6 To Cells(Rows.Count, "H").End(xlUp).Row
        If IsDate(Cells(I, "H").Value) Then
            If Cells(I, "H") <= (Date + 7) Or Cells(I, "G") <= (Date + 7) Then
                BDT = BDT & vbCrLf & Cells(I, "C") & " / " & Cells(I, "D") & " - " & "Scad Lib: " & _
                    Format(Cells(I, "G"), "dd-mmm-yyyy") & "Scad Ass: " & Format(Cells(I, "H"), "dd-mmm-yyyy")
                myCnt = myCnt + 1
            End If
        End If
    Next I
Next FogliO


BDT = BDT & vbCrLf & "Cordiali saluti" & vbCrLf
BDT = BDT & "La tua macro"
''  (b)
If myCnt = 0 Then Exit Sub                              'Nessuna scadenza, si termina senza azioni
'
'DA QUI SI CREA E INVIA LA MAIL:
Set OutApp = CreateObject("Outlook.Application")
EmailAddr = "TuaEmail@Dominio.Com"                      '<<< INDIRIZZO EMAIL
Subj = "Scadenze del " & Format(Date, "yyyy-mmm-dd")    ' OGGETTO DELLA MAIL
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = EmailAddr
.CC = ""
.BCC = ""
.Subject = Subj
.Body = BDT
'.Display 'or use .send
.send
End With
Application.Wait (Now + TimeValue("0:00:04"))
'  (c)
Set OutMail = Nothing
'  (d)
Set OutApp = Nothing
'
End Sub
Le righe marcate <<< vanno personalizzate

La macro contiene un loop (For Each FogliO In Elenco / Next FogliO) che seleziona uno alla volta tutti i fogli in cui "guardare" e un secondo loop (For I = 6 To Cells(Rows.Count, "H").End(xlUp).Row /Next I) che controlla una per una le righe dei fogli.

La mail indichera' in quali fogli, Modello /Targa - scadenze relative, ma il testo puo' essere variato variando la composizione di BDT.

Uso del codice:
Da excel: Alt-F11 per aprire l' editor delle macro; Menu /Inserisci /Modulo; copia il codice e incollalo nel frame di dx. Personalizza le righe marcate <<<

All'occorrenza avvierai la macro Invioemail33:
Da Excel, premi alt-F8, scegli Invioemail33 dall' elenco di macro che ti propone, premi Esegui.

Potrebbe essere utile attivare la Invioemail33 all'apertura del file.
A questo scopo, da Excel premi Alt-F11 per andare all'editor delle macro; identifica nel frame Progetto-VbaProject di sx la voce Questa-Cartella_di_Lavoro ed espandila con Doppioclick; poi inserisci questo codice nel frame vuoto di dx:
Codice: Seleziona tutto
Private Sub Workbook_Open()
    Call Invioemail33
End Sub

A questo punto la macro Invioemail33 si avviera' automaticamente all'apertura del file.

Prova e fai sapere, ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19438
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL-OUTLOOK 2013] Macro per invio e-mail scadenzario

Postdi geronimo91 » 21/08/15 12:11

La macro funziona perfettamente, esattamente come volevo che funzionasse, e sei stato chiarissimo anche per un newbie come me :)
Grazie mille per l'aiuto e per l'incredibile celerità della risposta... questa community è davvero grandiosa :D

P.S.
un'altra piccola informazione... come posso modificare la macro in modo che invii solo le date in scadenza e non quelle già scadute?
geronimo91
Newbie
 
Post: 3
Iscritto il: 20/08/15 11:07

Re: [EXCEL-OUTLOOK 2013] Macro per invio e-mail scadenzario

Postdi Anthony47 » 23/08/15 22:18

Io non dimenticherei le righe gia' scadute...
Piuttosto userei una colonna libera, es la N (o quella che vuoi tu) per inserire l'informazione che la pratica e' stata presa in carico, e solo in questo caso si ignora la scadenza.
Es se in N scriverai "OK" quando ricevi la notifica e avvii la pratica (ricordandoti di cancellarla quando inserisci la nuova data di scadenza...), allora devi modificare la riga If IsDate(Cells(I, "H").Value) Then in
Codice: Seleziona tutto
If IsDate(Cells(I, "H").Value) And UCase(left(Cells(I, "N"), 2)) <> "OK" Then

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

Re: [EXCEL-OUTLOOK 2013] Macro per invio e-mail scadenzario

Postdi geronimo91 » 25/08/15 13:42

Mi interessava tralasciare le date già scadute perché ci sono alcuni mezzi spostati presso altri cantieri e ancora presenti in elenco per un eventuale ritorno (ad ognuno di essi è stato assegnato un numero specifico legato ad una determinata pratica, quindi preferisco conservarli per rendere più agevole la parte burocratica).
Però la tua soluzione è ottima, in questo modo è anche più visibile per altre persone che visioneranno il file :D

Ti ringrazio ancora per la disponibilità e per il supporto fornitomi :D Buona giornata :)
geronimo91
Newbie
 
Post: 3
Iscritto il: 20/08/15 11:07

Re: [EXCEL-OUTLOOK 2013] Macro per invio e-mail scadenzario

Postdi Fiancr » 10/02/17 18:22

Buonasera a tutti sono fiancr un nuovo iscritto
ho sfruttato anche io la macro e complimenti per il fantastico funzionamento.
Ho soltanto un problema: avrei necessità che invii la mail solo per le scadenze in arrivo entro 7 gg dalla data odierna, senza che riporti quelle già scadute.
Potreste per cortesia indicarmi quale e come modificare la relativa stringa?
Grazie anticipatamente per la collaborazione
Fiancr
Utente Junior
 
Post: 10
Iscritto il: 10/02/17 18:08

Re: [EXCEL-OUTLOOK 2013] Macro per invio e-mail scadenzario

Postdi Anthony47 » 11/02/17 19:59

Ciao Fiancr, benvenuto nel forum.
Nella discussione e' spiegato come evitare di continuare a inviare meno a eventi gia' sollecitati (sia che stiano nei prossimi 7 giorni, sia che siano gia' scaduti), tramite la colonna N in cui viene marcato "evento gia' preso in gestione".
Comunque se vuoi fermarti solo alle date in futura scedenza allora modificherai questa riga
If Cells(I, "H") <= (Date + 7) Or Cells(I, "G") <= (Date + 7) Then
in
Codice: Seleziona tutto
            If (Cells(I, "H") <= (Date + 7) And Cells(I, "H") <= Now) Or (Cells(I, "G") <= (Date + 7) And Cells(I, "G") <= Now) Then

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

Re: [EXCEL-OUTLOOK 2013] Macro per invio e-mail scadenzario

Postdi Fiancr » 11/02/17 20:48

Grazie tante, non ne capisco di programmazione, e prendendo un po' di qua ed un po' di la, ho messo insieme tante idee ed ho creato un simpatico scadenzario. Lunedì proverò e vi farò sapere!
E GRAZIE ANCORA, SIETE GRANDI!!!
Fiancr
Utente Junior
 
Post: 10
Iscritto il: 10/02/17 18:08

Re: [EXCEL-OUTLOOK 2013] Macro per invio e-mail scadenzario

Postdi Fiancr » 13/02/17 19:37

Gentili antony47,
Il codice che avete allegato funziona regolarmente ma ho sbagliato a descrivere bene le mie necessità che sono un po' più "semplici" rispetto a quello dell'amico geronimo: a me servirebbe un codice che per esempio, ogni giorno che passa mi avvisi delle scadenze future entro i 7 giorni futuri. Non so se se può fare ma con questo codice succede che oggi giorno 13/02 mi invia le mail SOLO del 20/02 (7 giorni dopo).
In realtà a me servirebbe che oggi 13/02 mi avvisi delle scadenze del 14,15,16...... fino al 20/02 rispetto alle date della sola colonna "D" a me necessaria, con la possibilità come ho letto sopra che con l'apposito codice si possa "tacitare" quella scadenza scrivendo accanto nella colonna "E" un semplice OK come segno di presa visione. Chiaramente domani 14/02, dovrà segnarmi tutti i giorni fino al 21/02 ripetendo ovviamente ciò che non è stato tacitato.
Si può fare qualcosa in merito o è troppo complesso?
A me servirebbero: colonna "A" oggetto, colonna "B" cognome e nome, colonna "C" data di esecuzione (dato solo di riferimento) e la precedente colonna "D" data verifica scadenza.
Grazie anticipatamente e perdonate la mia ignoranza in materia.
Fiancr
Utente Junior
 
Post: 10
Iscritto il: 10/02/17 18:08

Re: [EXCEL-OUTLOOK 2013] Macro per invio e-mail scadenzario

Postdi Anthony47 » 13/02/17 23:57

Supponiamo che sul foglio attivo, da riga 2 in avanti, la data di scadenza sia in colonna D, e in colonna E ci sia l'Ok di presa in carico di un sollecito. Colonna A e Colonna B devono essere anche loro inseriti nel corpo della mail.

La macro idonea potrebbe essere:
Codice: Seleziona tutto
Sub Invioemail44()
' http://www.pc-facile.com/forum/viewtopic.php?f=26&t=105254&p=634621#p634621
Dim OutApp As Object, OutMail As Object
Dim EmailAddr As String, Subj As String
Dim BDT As String, I As Long, myCnt As Long, Elenco, FogliO           'FIN QUI E' SONO "DICHIARAZIONI"
'  (a)
Elenco = Array("Foglio3", "Foglio4")          '<<< L'elenco dei fogli in cui cercare
'
'NELLA PROSSIMA RIGA:            '<<<< TESTO STANDARD NELLA MAIL
BDT = "Elenco automezzi in scadenza al " & Format(Date, "yyyy-mmm-dd") & vbCrLf

For Each FogliO In Elenco
BDT = BDT & vbCrLf & vbCrLf & "SCADENZE DAL FOGLIO " & FogliO
    Sheets(FogliO).Select
'compilazione del testo della mail
    For I = 2 To Cells(Rows.Count, "A").End(xlUp).Row
        If IsDate(Cells(I, "D").Value) And UCase(Left(Cells(I, "E"), 2)) <> "OK" Then
            If Cells(I, "D") <= (Date + 7) Then
                BDT = BDT & vbCrLf & Cells(I, "A") & " / " & Cells(I, "B") & " - " & "Scadenza: " & _
                    Format(Cells(I, "D"), "dd-mmm-yyyy")
                myCnt = myCnt + 1
            End If
        End If
    Next I
Next FogliO
BDT = BDT & vbCrLf & vbCrLf & "Cordiali saluti" & vbCrLf
BDT = BDT & "La tua macro"
''  (b)
If myCnt = 0 Then Exit Sub                              'Nessuna scadenza, si termina senza azioni
'
'DA QUI SI CREA E INVIA LA MAIL:
Set OutApp = CreateObject("Outlook.Application")
EmailAddr = "pippo@dominio.com"                         '<<< INDIRIZZO EMAIL
Subj = "Scadenze del " & Format(Date, "yyyy-mmm-dd")    '<<< OGGETTO DELLA MAIL
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = EmailAddr
.CC = ""
.BCC = ""
.Subject = Subj
.Body = BDT
.Display 'or use .send
'.send
End With
Application.Wait (Now + TimeValue("0:00:04"))
'  (c)
Set OutMail = Nothing
'  (d)
Set OutApp = Nothing
'
End Sub

Le righe marcate <<< contengono testo (tra virgolette) che deve essere personalizzato.

Prova e fai sapere.
Avatar utente
Anthony47
Moderatore
 
Post: 19438
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL-OUTLOOK 2013] Macro per invio e-mail scadenzario

Postdi Fiancr » 14/02/17 16:40

Perfettamente funzionante! GRANDIOSO, GRAZIE.
Unica cosa: là macro funziona solo se l'avvio io e quindi all'atto dell'apertura del file. È possibile che la stessa, lasciando il file aperto, effettui in automatico il lancio delle scadenze anche in mia assenza?(per esempio impostando un lancio della macro ogni mattino alle 07.00?
Forse chiedo troppo... Vi ringrazio!
Fiancr
Utente Junior
 
Post: 10
Iscritto il: 10/02/17 18:08

Re: [EXCEL-OUTLOOK 2013] Macro per invio e-mail scadenzario

Postdi Anthony47 » 15/02/17 01:56

Si, si puo' fare attivando la macro col metodo OnTime. Tuttavia in questo modo potrebbe succedere che una operativita' garibaldina porti alla pianificazione di piu' invii.
D'altra parte non e' nemmeno necessario che le mail vengano ricevute in tua assenza, quindi il suggerimento e' che lasci la situazione come e' adesso, la sera chiudi il file e lo riapri alla mattina successiva.

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

Re: [EXCEL-OUTLOOK 2013] Macro per invio e-mail scadenzario

Postdi wilson737 » 23/10/17 11:50

Buongiorno a tutti!
ho provato a guardare delle discussioni precedenti simili alla mia richiesta ma non riesco a capirci nulla perchè non conosco per niente il linguaggio vba.
Ho un problema di questo genere:
Ho un file excel "elenco atleti" dove ho un foglio excel "dati" dove nella cella A ho "nome"; cella B "cognome"; cella C "indirizzo"; cella D " data nascita"; cella E "contatti"; cella F " scadenza certificato medico" con data inserita tipo "23/10/17"; cella G " indirizzo email"; e altri dati nelle altre celle.
Mi piacerebbe che nel file excel al verificarsi della condizione "30 giorni prima della scadenza del certificato medico" in automatico inviasse una mail con i dati della persona sempre all'indirizzo mail della persona a cui scade il certificato che si trova nella cella G e contemporaneamente anche alla mia mail che sarà sempre" es.prova@dominio.it".
La mail dovrà avere un intestazione precompilata tipo:
Buongiorno, con la presente siamo ad informarla che fra 30 giorni il certificato medico di " dati del ragazzo" scadrà, si prega di provvedere subito al suo rinnovo. Spiegatemi per favore passo passo cosa fare.
P.S. dovrò per forza aprire sempre il file excel per far sì che parta il meccanismo?
grazie mille
wilson737
Newbie
 
Post: 3
Iscritto il: 23/10/17 11:29

Re: [EXCEL-OUTLOOK 2013] Macro per invio e-mail scadenzario

Postdi Anthony47 » 23/10/17 21:19

ho provato a guardare delle discussioni precedenti simili alla mia richiesta ma non riesco a capirci nulla perchè non conosco per niente il linguaggio vba
Pero' questo e' un forum di assistenza, non uno sportello di sviluppi su misura gratuiti...

Comunque, partendo da una delle numerose macro gia' pubblicate, ho personalizzato questa:
Codice: Seleziona tutto
Sub Invioemail55()
'Dichiarazioni iniziali:
Dim OutApp As Object, OutMail As Object
Dim EmailAddr As String, Subj As String, DataCol As String, Franc As Long
Dim BDT As String, Nominat As String, mCnt As Long, myScad As Long
'  (a)
DataCol = "Z"                           '<<< Una colonna libera, sara' usata per scriverci la data di sollecito
myScad = 30                             '<<< L'anticipo con cui inviare il sollecito
Franc = 10                              '<<< Il periodo tra un sollecito e il successivo, in giorni
'
Set OutApp = CreateObject("Outlook.Application")
''compilazione di un testo standard di accompagnamento:
BDT = "Qui ci metti un testo standard per tutti, lungo a piacere"       '<<< Testo fisso a piacere
BDT = BDT & vbNewLine & "Cordiali saluti" & vbNewLine                   '<<< Saluti e firma
BDT = BDT & "Mr. Superpippo"                                            '<<<
''  (b)
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    If Cells(i, 6) - Int(Now) < myScad And (Int(Now) - Cells(i, DataCol)) > Franc Then
        Nominat = Cells(i, 1) & " " & Cells(i, 2)                               'Nome Cognome
        EmailAddr = Cells(i, 7)                                                 'INDIRIZZO EMAIL
        Subj = "Scadenza certificato medico; sig " & Nominat & Format(Cells(i, 6), " dd-mm-yyyy") 'Subj
        '
        Set OutMail = OutApp.CreateItem(0)     'DA QUI SI CREA E INVIA LA MAIL
        With OutMail
            .To = EmailAddr
            .CC = "tuoIndirizzo@tuoDominio.Zc"                                      '<<< Indirizzo CC
            .BCC = ""
            .Subject = Subj
            .Body = BDT
'            .Display 'oppure .send
            .Send
        End With
        ''  (c)
        Application.Wait (Now + TimeValue("0:00:01"))
        Set OutMail = Nothing
        mCnt = mCnt + 1
        Cells(i, DataCol) = Int(Now)
    End If
Next i
'
''  (d)
Set OutApp = Nothing
'
Application.Wait (Now + TimeValue("0:00:01"))
If mCnt > 0 Then
    MsgBox ("Inviate N. " & mCnt & " mail per prossima scadenza")
Else
    MsgBox ("Nessuna scadenza da sollecitare")
End If
'
End Sub

Va messa in un modulo standard del vba; per questo, partendo da Excel:
-premi Alt-F11 per aprire l'editor delle macro
-Menu /Inserisci /Modulo
-Copia il codice e incollalo nel frame dx del modulo appena creato
Personalizza le tante righe marcate <<< come da commenti.

La macro controlla le date di scadenza, e dove mancano meno di un tot di giorni invia una mail di sollecito; contemporaneamente scrive in una colonna libera la data di invio. In questo modo il giorno dopo non sara' inviato un nuovo sollecito. Superato pero' un tot di giorni viene reinviata la mail di sollecito, se nel frattempo la data di scadenza non e' stata aggiornata.
Il testo della mail e' standard, le personalizzazioni sono contenute nel Subject.

Molti parametri (preavviso, i giorni prima di un secondo sollecito, la colonna libera per scriverci la data, il testo standard del messaggio) sono da personalizzare nella macro (vedi righe marcate <<<).

Quando vuoi eseguire la macro, avvia la Sub InvioEmail55:
-partendo dal foglio dell'anagrafica, premi Alt-F8
-seleziona InvioEmail55 dall'elenco di macro disponibili
-premi Esegui

Se vuoi fare il controllo e inviare le mail all'apertura del file, allora:
-identifica, nell'editor delle macro, nel frame Progetto-VBAProject la "scheda" Questa_cartella_di_lavoro e fai doppioclick
-inserisci questo codice nel frame vuoto di dx:
Codice: Seleziona tutto
Private Sub Workbook_Open()
Call InvioEmail55
End Sub


Io pero' sconsiglio questa modalita', perche' (ad esempio) se apri il file per inserire la nuova data di scadenza allora potrebbe partire una mail di sollecito anche per il certificato appena ricevuto.

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

Re: [EXCEL-OUTLOOK 2013] Macro per invio e-mail scadenzario

Postdi wilson737 » 24/10/17 15:35

Ti ringrazio Anthony, sei stato molto gentile e veloce nella risposta e mi scuso per aver chiesto una macro "su misura".
Ad ogni modo funziona ma non del tutto! Quando faccio partire la macro mi dice che ha inviato le mail. Purtroppo però non sono arrivate ai destinatari. Potrei aver commesso degli errori? Ho seguito passo passo le tue istruzioni e ho provveduto a modificare le parti <<<. Tra l'altro la colonna Z che viene usata per annotare la data di invio mail viene segnata in questo modo ######. In ogni caso ti ringrazio per la pazienza e per il prezioso aiuto ;)
wilson737
Newbie
 
Post: 3
Iscritto il: 23/10/17 11:29

Re: [EXCEL-OUTLOOK 2013] Macro per invio e-mail scadenzario

Postdi wilson737 » 24/10/17 15:47

come non detto, funziona! Ti ringrazio :)
wilson737
Newbie
 
Post: 3
Iscritto il: 23/10/17 11:29

Re: [EXCEL-OUTLOOK 2013] Macro per invio e-mail scadenzario

Postdi Anthony47 » 24/10/17 20:31

come non detto, funziona! Ti ringrazio
Eh he, lo sapevo...

Quanto alla colonna che contiene ##### ti sarai gia' accorto che bisogna allargarla per visionarne il contenuto.

Alla prossima!
Avatar utente
Anthony47
Moderatore
 
Post: 19438
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL-OUTLOOK 2013] Macro per invio e-mail scadenzario

Postdi Fiancr » 28/09/22 08:28

Buongiorno a tutti, relativamente alla macro Invio Mail 44 che ha funzionato regolarmente per anni, da questa mattina all'atto dell'utilizzo su nuovo PC con Office 365 restituisce un errore "Errore compilazione - Impossibile trovare il progetto o la libreria"
il codice utilizzato è il seguente, sapresti indicarmi cosa c'è che non va?

Codice: Seleziona tutto
Sub Invioemail44()
' http://www.pc-facile.com/forum/viewtopic.php?f=26&t=105254&p=634621#p634621
Dim OutApp As Object, OutMail As Object
Dim EmailAddr As String, Subj As String
Dim BDT As String, I As Long, myCnt As Long, Elenco, FogliO           'FIN QUI E' SONO "DICHIARAZIONI"
'  (a)
Elenco = Array("archivio")          '<<< L'elenco dei fogli in cui cercare
'
'NELLA PROSSIMA RIGA:            '<<<< TESTO STANDARD NELLA MAIL
BDT = "SI SEGNALANO DI SEGUITO LE PROSSIME SCADENZE A FAR DATA DAL " & Format(Date, "dd-mmm-yyyy") & vbCrLf

For Each FogliO In Elenco
BDT = BDT & vbCrLf & vbCrLf & "Di Seguito l'oggetto di scadenza che dopo presa visione è possibile tacitare scrivendo <<OK>> nel relativo allarme nel foglio " & FogliO
    Sheets(FogliO).Select
'compilazione del testo della mail
    For I = 2 To Cells(Rows.Count, "A").End(xlUp).Row
        If IsDate(Cells(I, "D").Value) And UCase(Left(Cells(I, "E"), 2)) <> "OK" Then
            If Cells(I, "D") <= (Date + 10) Then
                BDT = BDT & vbCrLf & Cells(I, "A") & " / " & Cells(I, "B") & " - " & "DATA DI SCADENZA: " & _
                    Format(Cells(I, "D"), "dd-mmm-yyyy")
                myCnt = myCnt + 1
            End If
        End If
    Next I
Next FogliO
BDT = BDT & vbCrLf & vbCrLf & "Cordiali saluti" & vbCrLf
BDT = BDT & "A. CRUCITTI"
''  (b)
If myCnt = 0 Then Exit Sub                              'Nessuna scadenza, si termina senza azioni
'
'DA QUI SI CREA E INVIA LA MAIL:
Set OutApp = CreateObject("Outlook.Application")
EmailAddr = "fiancr@live.it;"                      '<<< INDIRIZZO EMAIL
Subj = "<<ATTENZIONE PROSSIME SCADENZE>>"    ' OGGETTO DELLA MAIL
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = EmailAddr
.CC = ""
.BCC = ""
.Subject = Subj
.Body = BDT
'.Display 'or use .send
.send
End With
Application.Wait (Now + TimeValue("0:00:04"))
'  (c)
Set OutMail = Nothing
'  (d)
Set OutApp = Nothing
'
End Sub
Fiancr
Utente Junior
 
Post: 10
Iscritto il: 10/02/17 18:08

Re: [EXCEL-OUTLOOK 2013] Macro per invio e-mail scadenzario

Postdi Anthony47 » 28/09/22 10:01

Ho eseguito il codice con Office365 e la mail stata correttamente creata senza messaggi di errore.
Hai gia' usato, su questo nuovo Pc, Outlook per la gestione delle email? Cioe' esiste un utente configurato?
Avatar utente
Anthony47
Moderatore
 
Post: 19438
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL-OUTLOOK 2013] Macro per invio e-mail scadenzario

Postdi Fiancr » 28/09/22 10:05

Si, esiste già outlook com
Indirizzo configurato e l’ho utilizzato correttamente, ma non riesco a capire cos’altro devo verificare
Fiancr
Utente Junior
 
Post: 10
Iscritto il: 10/02/17 18:08

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL-OUTLOOK 2013] Macro per invio e-mail scadenzario":


Chi c’è in linea

Visitano il forum: Nessuno e 20 ospiti