Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Vba per invio 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

Vba per invio mail

Postdi lucy86lucy » 12/01/17 10:25

Buongiorno a tutti
Sono una principiante e sto facendo un corso per Vba e macro ma al momento non ci capisco nulla.. help!
Excel tioffre tra i file di default il calendario studenti.. ottimo anche da utilizzare sul lavoro.
Mi servirebbe una macro che una settimana prima della scadenza mi invii una mail ricordami il lavoro da fare.
È possibile?
Grazie mille
lucy86lucy
Newbie
 
Post: 6
Iscritto il: 12/01/17 08:19

Sponsor
 

Re: Vba per invio mail

Postdi alfrimpa » 12/01/17 11:41

Ciao Lucy

La cosa è senz'altro possibile con il VBA ma dovresti allegare un file di esempio giusto per capire la struttura dei dati e dovresti specificare anche quale client di posta utilizzi (Outlook o altro).
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Vba per invio mail

Postdi lucy86lucy » 12/01/17 12:17

.. oddio.. non riesco ad allegare nulla :eeh: :eeh: come faccio?
beata ignoranza :undecided: :undecided:
lucy86lucy
Newbie
 
Post: 6
Iscritto il: 12/01/17 08:19

Re: Vba per invio mail

Postdi alfrimpa » 12/01/17 13:42

Devi usare un sito di file sharing tipo filedropper o dropbox

Comunque guarda qui

viewtopic.php?f=26&t=103893
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Vba per invio mail

Postdi lucy86lucy » 12/01/17 14:04

scusami .. insistevo con lo stamp ma probabilmente col cellulare non riesco..
ecco il link
https://we.tl/l1voxjGSDD
lucy86lucy
Newbie
 
Post: 6
Iscritto il: 12/01/17 08:19

Re: Vba per invio mail

Postdi alfrimpa » 12/01/17 15:31

Ciao Lucy

Ho guardato il file ma sinceramente non è che abbia capito moto.

Devi spiegare dettagliatamente quello che fai e dire quando l'invio della mail deve scattare (a parte la condizione della settimana prima) all'apertura del file, cliccando un pulsante oppure all'attivazione di un foglio etc.

Cerca di essere il più esauriente possibile ed inoltre ti avevo chiesto quale client di posta usi (Outlook)?
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Vba per invio mail

Postdi lucy86lucy » 12/01/17 15:46

certo scusami non sono stata molto chiara..
Praticamente ce l'ho installato su due pc:
in uno ho fatto in modo che alla mattina ogni volta che avvio il pc mi parte in automatico l'apertura del file..
nell'altro purtroppo non posso mai spegnerlo il pc e quindi il file è sempre aperto (se la condizione è che deve essere aperto giornalmente per leggere l'input dell'invio della mail ci forniremo dell'abitudine di chiudere il file alla sera e aprirlo al mattino..)

..quindi mi servirebbe che automaticamente rileva che ci sia la scadenza e circa 5 giorni prima invii la mail su outlook (sarebbe fantastico se si potesse anche mettere l'oggetto della mail "attenzione scadenza il "x" giorno")
Esempio:
come vedi nel file ho inserito nel mercoledi 25 invio scadenza intra e nel calendarietto in alto a sx si è evidenziato il 25.
Mi servirebbe che il 20 legga che c'è una scadenza e mi invii su outlook la mail ricordandomi la scadenza..

Spero di essere stata esauriente...

grazie x tutto fino ad ora
lucy86lucy
Newbie
 
Post: 6
Iscritto il: 12/01/17 08:19

Re: Vba per invio mail

Postdi Anthony47 » 13/01/17 00:53

Quel calendario non ha nessuna struttura dati, mi ricorda tanto i calendari cartacei che si tengono sulla scrivania per scriverci a penna nella prima posizione che capita sotto mano.
Cio' detto, se l'utente e' scrupoloso nel segnare le attivita' sempre in colonna M (**) e la data di scadenza sempre nella colonna "precedente", allora si potrebbe usare questa macro:
Codice: Seleziona tutto
Sub CkDDlines()
Dim myMon As String, tDay As Date, aSSegn As String, lstAss As Long
Dim mySc As String, scCnt As Long, J As Long
Dim OutApp As Object
Dim OutMail As Object
Dim EmailAddr As String
Dim Subj As String
Dim BodyText As String
'
'
aSSegn = "M"                '<<< La colonna con i compiti
tDay = Int(Now)
mySc = "Scadenze da segnalare: " & vbCrLf
For J = 0 To 1
    myMon = Format(tDay + 15 * J, "mmmm")
    Sheets(myMon).Select
    lstAss = Cells(Rows.Count, aSSegn).End(xlUp).Row
    For i = 1 To lstAss
        If Cells(i, aSSegn) <> "" And Cells(i, aSSegn).Offset(0, -1) <> "" Then
            If (Cells(i, aSSegn).Offset(0, -1) - Day(tDay)) <= 5 And Cells(i, aSSegn).Offset(0, -1) >= Day(tDay) Then
                mySc = mySc & myMon & " " & Cells(i, aSSegn).Offset(0, -1) & ", " & Cells(i, aSSegn) & vbCrLf
                scCnt = scCnt + 1
            End If
        End If
    Next i
If Day(tDay) < 20 Then Exit For
Next J
If scCnt > 0 Then
    Set OutApp = CreateObject("Outlook.Application")
    Subj = "Scadenze del " & Format(tDay, "dd-mmm-yyy")     '<<< OGGETTO DELLA MAIL
    EmailAddr = "Destinatario@dominio.com"                  '<<< Il Destinatario
    '
    Set OutMail = OutApp.CreateItem(0)     'DA QUI SI CREA E INVIA LA MAIL
    With OutMail
        .To = EmailAddr
        .CC = ""
        .BCC = ""
        .Subject = Subj
        .Body = mySc
        .Send
    End With
    '  (c)
    Application.Wait (Now + TimeValue("0:00:01"))
    Set OutMail = Nothing
    Set OutApp = Nothing
End If
End Sub

Per inserire il codice:
-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 righe marcate <<< come da commento.

Poi torna su Excel e quando vuoi creare l'elenco delle scadenze in arrivo lancia la macro CkDDlines:
-premi Alt-F8
-seleziona CkDDlines dall'elenco di macro disponibili
-premi Esegui

Alternativamente puoi fare in modo che la CkDDlines venga lanciata automaticamente all'apertura del file; per questo inserirai nel modulo QuestaCartellaDiLavoro il codice:
Codice: Seleziona tutto
Private Sub Workbook_Open()
Call CkDDlines
End Sub

Il file andra' salvato nel formato .xlsm (macro enabled).

Nella prima parte la macro scansiona il calendario per controllare se ci sono scadenze entro 5 gg; se ne vengono trovate viene inviata una email all'indirizzo specificato con un testo del tipo
Scadenze da segnalare:
gennaio 16, Scadenza 1
gennaio 17, Scadenza 2

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

Re: Vba per invio mail

Postdi lucy86lucy » 13/01/17 09:49

usti...
grazie mille!! ci provo e poi ti faccio sapere!
grazie ancora e buona giornata
lucy86lucy
Newbie
 
Post: 6
Iscritto il: 12/01/17 08:19

Re: Vba per invio mail

Postdi enrico43 » 13/01/17 12:19

Buongiorno,
poichè anche a me interessa l'operazione di invio automatico di email relativamente allo scadere di date, ho copiato e testato la macro che però all'invio con MOfficeOutlook presenta il solito avviso "Un programma sta tentando di inviare...... Consentire l'operazione? etc."
So che il problema si risolve utilizzando CDO (dal sito di Rondebruin) poichè è uno dei sistemi che utilizzo per inviare email in automatico, però non saprei come adattarlo alla macro e ti sarei grato se mi aiutassi nell'intento.
Infine nell'oggetto che ho leggermente modificato, quando arriva l'email
Subj = "Scadenze da assolvere entro il " & Format(tDay, "dd-mmm-yyy")
appare quest'oggetto
Scadenze da assolvere entro il 18-gen-1718.
Uso XP ed Excel 2003, in sintonia con la data dell'oggetto: vecchio di 299 anni.
Un cordiale saluto
Enrico
enrico43
Utente Senior
 
Post: 208
Iscritto il: 13/09/14 15:33
Località: Fiumicino

Re: Vba per invio mail

Postdi Anthony47 » 13/01/17 16:03

Il cdo e' un sistema ottimo perche' il pc faccia cose senza che l'utente lo sappia; cancellero' qualsiasi suggerimento in proposito, gli esperti sanno gia' come fare e spero che sappiano anche come controllare il loro pc.
Se usi OL2003 allora la cosa migliore e' sostituire il ".Send" con
Codice: Seleziona tutto
        .Display
        Application.Wait (Now + TimeValue("0:00:01"))
        Application.SendKeys "%a"
        Application.Wait (Now + TimeValue("0:00:01"))

In questo modo si usera' SendKeys per dare il comando di Invio della mail. Funziona con Outlook in Italiano, dove la combinazione "Alt-a" (SendKeys "%a") corrisponde al comando Invia; se usi altre lingue devi modificare la stringa "%a"

Il formato giusto per la data e' "dd-mmm-yyyy"

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

Re: Vba per invio mail

Postdi enrico43 » 13/01/17 20:44

Avevo già visto questo lungo 3d del marzo 2012 e so anche che col CDO vengono inviate emails all’insaputa del titolare del pc. Sono blindato per questo.
Conoscevo già il sendkeys ma non ricordavo la lettera da unire e stavo perciò cercando di far funzionare l’alternativa
OlSecurityManager.DisableOOMWarnings = True
On Error GoTo Finally
... istruzioni ...
Finally:
OlSecurityManager.DisableOOMWarnings = False
per il momento senza successo, ma sempre con l’obbiettivo del CDO. Peraltro ambedue i metodi presentano gli stessi rischi del CDO spedendo in automatico, solo che con CDO spedisci qualunque sia l’email client.
Ringrazio del riscontro pressoché immediato.
Un cordiale saluto
Enrico
enrico43
Utente Senior
 
Post: 208
Iscritto il: 13/09/14 15:33
Località: Fiumicino

Re: Vba per invio mail

Postdi Anthony47 » 14/01/17 01:17

Ma tu hai l'addin Outlook Security Manager?

Peraltro ambedue i metodi presentano gli stessi rischi del CDO spedendo in automatico, solo che con CDO spedisci qualunque sia l’email client.
Parli (immagino) del cdo e di outlook; la differenza e' anche che le mail spedite tramite outlook le trovi all'interno del folder Mail spedite, quelle del cdo non le memorizzi da nessuna parte.

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


Torna a Applicazioni Office Windows


Topic correlati a "Vba per invio mail":


Chi c’è in linea

Visitano il forum: Anthony47 e 37 ospiti