Condividi:        

Errore metodo .send quando l'indirizzo mail non è valido

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

Errore metodo .send quando l'indirizzo mail non è valido

Postdi kiuba » 19/01/21 22:34

Buonasera,
utilizzo una macro per inviare delle newsletter. Gli indirizzi vengono raccolti da un form in rete e a volte ci sono degli errori (xxx@yyy..it oppure xxx@yyy,it etc..).
Quando la macro trova uno di questi indirizzi va in errore e si blocca mettendo in evidenza nel debug la riga .send.
Vorrei evitare il problema, anche semplicemente saltando la riga problematica e passando alla successiva, ma non so come fare..

Gli indirizzi si trovano in colonna A e la macro semplificata è la seguente:
Codice: Seleziona tutto
Sub Invio_mail()
Dim OutApp As Object
Dim OutMail As Object
Dim EmailAddr As String
Dim Subj As String
Dim BodyText As String
Set OutApp = CreateObject("Outlook.Application")


For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row   
        'compilazione di un testo standard di accompagnamento
        BDT = "......."
        BDT = BDT & vbCrLf & "......." & vbCrLf
        BDT = BDT & "kiuba"

        Set OutApp = CreateObject("Outlook.Application")
        EmailAddr = Sheets("Foglio1").Cells(i, 1).Value  '<<< La cella dove si trova l'indirizzo mail
        Subj = "NEWSLETTER"
           
        Set OutMail = OutApp.CreateItem(0)
        With OutMail
            .To = EmailAddr
            .CC = ""
            .BCC = ""
            .Subject = Subj
            .Body = BDT
            .Attachments.Add "C:\miacartella\" & "NomeFile"
            .Send
         End With
         Set OutMail = Nothing
         Application.Wait (Now + TimeValue("0:00:01"))
   
Next i

Set OutApp = Nothing

End Sub



Vi ringrazio per l'aiuto che riuscirete a darmi!
Avatar utente
kiuba
Utente Junior
 
Post: 54
Iscritto il: 30/11/20 21:24

Sponsor
 

Re: Errore metodo .send quando l'indirizzo mail non è valido

Postdi Anthony47 » 19/01/21 23:53

Puoi provare ad inserire istruzioni per la gestione degli errori; ad esempio:
Codice: Seleziona tutto
    Set OutlookApp = CreateObject("Outlook.Application") 'New Outlook.Application
On Error GoTo GErr                      '+++
    Set MItem = OutlookApp.CreateItem(0)    '(olMailItem)
    With MItem
      .To = Recipient
      .Subject = Subj
      .body = Msg
'      .Attachments.Add Fname
'      .display
      .send
MCont:                                  '+++
    End With
    Set OutlookApp = Nothing
'
    Exit Sub                            '+++
GErr:                                   '+++
Cells(Rows.Count, "Z").End(xlUp).Offset(1, 0).Value = Recipient             '+++
Cells(Rows.Count, "Z").End(xlUp).Offset(0, 1).Value = "'" & Err.Number      '+++
Set MItem = Nothing                     '+++
Resume MCont                            '+++
'
End Sub


In caso di errore, con le modifiche introdotte (vedi righe marcate +++) in caso di errore vengono registrati in colonna Z e AA (che si presuppone siano libere) l'indirizzo e il codice di errore, prima che la mail venga distrutta.
Preferisco questa ipotesi rispetto alla semplice "On Error Resume Next" soprattutto se le mail sono tante e quindi presumibilmente ci sia un ciclo che continui a inviare le successive email invece che chiudere la macro con l'invio della singola mail.

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

Re: Errore metodo .send quando l'indirizzo mail non è valido

Postdi kiuba » 22/01/21 08:24

Grazie, soluzione ottima!
Avatar utente
kiuba
Utente Junior
 
Post: 54
Iscritto il: 30/11/20 21:24

Re: Errore metodo .send quando l'indirizzo mail non è valido

Postdi kiuba » 25/01/21 21:46

Ciao.
é possibile associare l'errore (On Error GoTo ...) ad un errore che avviene in un punto specifico della macro?
Mi spiego meglio.. Vorrei che il percorso costruito per l'errore venisse eseguito solo se l'errore è legato all'istruzione .send.

Infine, è possibile inserire un ulteriore percorso d'errore in caso di errore di diversa tipologia? Ad esempio nel caso in cui chieda di spostare un file, ma il file non viene trovato.



Grazie
Avatar utente
kiuba
Utente Junior
 
Post: 54
Iscritto il: 30/11/20 21:24

Re: Errore metodo .send quando l'indirizzo mail non è valido

Postdi Anthony47 » 26/01/21 00:56

Puoi inserire tutte le gestioni che ti servono...
In ogni momento puoi indicare On Error Goto XYZ (con XYZ diversi); oppure (che e' meglio) all'interno della unica routine controlli il codice di errore e li gestisci separatamente;
Codice: Seleziona tutto
GERR:
    myError = Err.Number
    If myError ....
    '...
    elseIf myError ...
    '...   

oppure (che potrebbe essere meglio) numeri tutte le righe del codice e poi usi "Erl" per ottenere la riga in errore:
Codice: Seleziona tutto
On Error GoTo GERR
10: Range(pipp).Select
11: Selection.Formula = "=sum(F1:F1000")"
'...
'...

GERR:
    Debug.Print Erl
    myLine = Erl
'...


E, aggiungo:
potresti anche usare On Error Resume Next, con obbligo pero' di controllare a ogni blocco di istruzioni se c'e' stato un errore:
Codice: Seleziona tutto
    If Err.Number <> 0 Then
    '...


Per la descrizione di quel che puoi ottenere e fare su errore: https://docs.microsoft.com/it-it/office ... err-object

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


Torna a Applicazioni Office Windows


Topic correlati a "Errore metodo .send quando l'indirizzo mail non è valido":


Chi c’è in linea

Visitano il forum: Nessuno e 16 ospiti