Condividi:        

Formula per invio programmato

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

Formula per invio programmato

Postdi WCB » 28/01/19 13:45

Buon pomeriggio a tutti,
recentemente,grazie a questo forum, ho scoperto una nuova funzione per l'invio programmato delle email 8) 8) facendo le varie prove con secondi,minuti ed ore funziona una meraviglia!!
La formula sarebbe la seguente:
Codice: Seleziona tutto
Application.Wait (Now + TimeValue("0:00:20"))

Siccome ho una luuunga lista di email (colonna D) ed inviarle tutte mi bloccherebbe il computer, la stessa formula la si può applicare alle celle? Se si come?
Cioè inviare una decina di email al giorno a destinatari diversi...
Tipo dalla riga 2(dove iniziano le email) alla riga 12.
Il giorno dopo dalla riga 13 alla riga 24 e così via...
Grazie mille dell'aiuto e buon appetito! ;)
"I computer sanno quando vai di fretta"
Excel 2016
Avatar utente
WCB
Utente Senior
 
Post: 101
Iscritto il: 09/01/19 17:52

Sponsor
 

Re: Formula per invio programmato

Postdi Anthony47 » 29/01/19 00:52

Codice: Seleziona tutto
Application.Wait (Now + TimeValue("0:00:20"))
Il problema sta proprio in questa istruzione; mi dici in che contesto la usi?

Inviare 100 mail puo' richiedere, a essere prudenti, 100 secondi; 1000 mail vanno via in 15 minuti... un coffe break

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

Re: Formula per invio programmato

Postdi WCB » 29/01/19 11:44

Ciao Anthony e grazie mille per la risposta :)
L'istruzione la uso per l'invio programmato di email (contesto lavorativo). Solo che se modifico i secondi, mettendolo a 5 secondi ad esempio, ogni 5 secondi mi invia le email. :-?
So che ci sarebbe anche l'istruzione:
Codice: Seleziona tutto
ApplicationOnTime
solo che non so come si utilizza. :oops: Il mio intento sarebbe quello di inviare in blocco 10-12 email (al giorno) dalla stessa colonna che contiene 1000 email.
"I computer sanno quando vai di fretta"
Excel 2016
Avatar utente
WCB
Utente Senior
 
Post: 101
Iscritto il: 09/01/19 17:52

Re: Formula per invio programmato

Postdi WCB » 29/01/19 12:36

Codice: Seleziona tutto
Dim EmailAddr As String
Dim Subj As String
Dim StrMsg As String
Dim uR As Long
Dim i As Long
Dim OutApp As Object
Dim OutMail As Object
Dim Subject As String

Sheet1.Select

Set OutApp = CreateObject("Outlook.Application")
Set wk1 = ThisWorkbook
Set sh = wk1.Worksheets("Sheet1")
uR = Worksheets("Sheet1").Cells(Rows.Count, 4).End(xlUp).Row

StrMsg = StrMsg & = "prova"
For i = 2 To uR
 

destinatario = Worksheets("Sheet1").Range("D" & i)
Set OutMail = OutApp.CreateItem(0)

With OutMail
  .To = destinatario
  .Subject = "PROVA"
  .HTMLBody = StrMsg
 
  .Attachments.Add ("C:\Users\...\document.pdf")
  .Attachments.Add ("C:\Users\....\cartel1.zip")
  .Display
  '.Send
 
Application.Wait (Now + TimeValue("0:00:10"))
End With

Cells(i, 6) = "x"
Next
End Sub


Questo è il codice che uso, la colonna D contiene gli indirizzi mail
"I computer sanno quando vai di fretta"
Excel 2016
Avatar utente
WCB
Utente Senior
 
Post: 101
Iscritto il: 09/01/19 17:52

Re: Formula per invio programmato

Postdi Anthony47 » 30/01/19 02:18

Come ti ho detto, sei principalmente tu con quella istruzione che attende 10-20 secondi per ogni mail che blocchi il pc e crei quella situazione insostenibile. Non so a che cosa ti serve, e nemmeno capisco a cosa dovrebbe servirti l'OnTime.

Io, dopo un .Send o .Display raccomando di inserire una piccola attesa per essere certi che la mail passi nella coda di gestione di Outlook prima che la macro Excel la distrugga; purtroppo con Application.Wait la granularita' e' a blocchi di 1 secondo, quindi il minimo possibile con quella istruzione e' 1 secondo anche se dalle mie prove potrebbe bastare anche meno.

Comunque, se dopo aver impostato l'attesa su 1 secondo ancora vuoi spedire un tot di mail al giorno allora:
-usiamo colonna Z per marcare la data di spedizione
-modifichiamo il codice che hai pubblicato come segue:

Codice: Seleziona tutto
Dim EmailAddr As String
Dim Subj As String
Dim StrMsg As String
Dim uR As Long
Dim I As Long
Dim OutApp As Object
Dim OutMail As Object
'Fin qui sono istruzioni gia' presenti
'
'Segue Codice modificato da Forum:
Sheets("Sheet1").Select     '<<< Il foglio con gli indirizzi
FreeCol = "Z"               '<<< La colonna in cui scriveremo la data di spediziione
MailPerDay = 10             '<<< Quante ne vuoi spedire ogni volta
Set OutApp = CreateObject("Outlook.Application")
uR = Cells(Rows.Count, 4).End(xlUp).Row
For I = 2 To uR
    If Cells(I, FreeCol) = "" Then
        destinatario = Range("D" & I)
        Set OutMail = OutApp.CreateItem(0)
        With OutMail
            .To = destinatario
            .Subject = "PROVA"
            .HTMLBody = StrMsg
            .Attachments.Add ("C:\Users\...\document.pdf")
            .Attachments.Add ("C:\Users\....\cartel1.zip")
             .Display
             '.Send
            Application.Wait (Now + TimeValue("0:00:01"))
        End With
        Cells(I, FreeCol) = CDate(Int(Now))
        Set OutMail = Nothing
        Cells(I, 6) = "x"
        MailPerDay = MailPerDay - 1
        If MailPerDay <= 0 Then Exit For
     End If
Next I
Set OutApp = Nothing
End Sub

Le istruzioni marcate <<< sono da personalizzare come da commento.

In questo modo, tutte le volte che esegui la macro verranno inviate il numero di email impostato.

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

Re: Formula per invio programmato

Postdi WCB » 30/01/19 15:48

Ciao e grazie della dritta..
Ma appena modifico la seguente istruzione
Codice: Seleziona tutto
MailPerDay = 10
mettendo al posto del 10 il 2 (per fare la prova) e lasciando invariato il resto, excel chiude la macro senza avviarla, :o invece se lascio il 10 va tutto bene..
Cosa sbaglio? :eeh:
"I computer sanno quando vai di fretta"
Excel 2016
Avatar utente
WCB
Utente Senior
 
Post: 101
Iscritto il: 09/01/19 17:52

Re: Formula per invio programmato

Postdi WCB » 30/01/19 19:18

Ho modificato il foglio mettendo per 10 volte la mia email :D solo che alla riga:
Codice: Seleziona tutto
uR = Cells(Rows.Count, 4).End(xlUp).Row   <<<<<<< evidenziato in giallo
mi esce scritto: Application defined or object defined error :?:
"I computer sanno quando vai di fretta"
Excel 2016
Avatar utente
WCB
Utente Senior
 
Post: 101
Iscritto il: 09/01/19 17:52

Re: Formula per invio programmato

Postdi Anthony47 » 31/01/19 00:27

Non ho doti pranoterapeutiche, quindi non so che cosa e' andato storto nella tua applicazione.

Pubblica un file dimostrativo contenente gia' la macro completa che hai usato e vedremo di trovare l'inghippo.

Per le istruzioni su come allegare un file:
viewtopic.php?f=26&t=103893&p=605487#p605487

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

Re: Formula per invio programmato

Postdi WCB » 05/02/19 10:40

Ciao Anthony e perdonami se rispondo solo ora :cry:
Alla fine ho risolto col codice, avevo scordato di inserire il public function ed end.
Ora funziona tutto alla perfezione, ho anche creato un pulsante che ad ogni click mi invia le email partendo dall'ultima che io ho inviato 8)
Detto questo, scusami ancora per il tempo trascorso senza dire niente, ma sai se non provi e riprovi non saprai mai se il codice andrà bene ;)
Grazie mille per l'aiuto e buona giornata :)
"I computer sanno quando vai di fretta"
Excel 2016
Avatar utente
WCB
Utente Senior
 
Post: 101
Iscritto il: 09/01/19 17:52


Torna a Applicazioni Office Windows


Topic correlati a "Formula per invio programmato":


Chi c’è in linea

Visitano il forum: Nessuno e 34 ospiti