segnalazione di errore



  • segnalazione di errore
    di nichicanta (utente non iscritto) data: 15/04/2013 16:48:53

    Amici del forum, con il codice (che Vi posto) invio benissimo messaggi di posta elettronica a tanti destinatari, nello stesso momento, vorrei però che il codice proseguisse con l'invio delle mail anche in caso di mancato recapito a uno o più indirizzi (invece ora si blocca all'errore e non invia le altre rimanenti) e mi segnalasse con un messaggio il/i destinatario/i ai quali l'ionvio non è andato a buon fine e riprendere l'invio dal punto di interruzzione senza ricominciare da capo.
    Vi chiedo, inoltre di sapere se c'è la possibilita di confrontare la presenza di file pdf tra i nomi dei file elencati in una colonna del foglio di excel con quelli salvati in una determinata cartella (aventi lo stesso nome ed estensione) ed essere avvisati dei file mancanti. vi saluto e Vi ringrazio in anticpoo per il Vostro prezioso aiuto.
     
    Sub inviamail()
    Application.ScreenUpdating = False
    Dim OutApp As Object
    Dim EmailAddr As String
    Dim subj As String
    Dim BodyText As String
    Foglio1.Select
    Range("I2:I6500").Activate
    Range("I2:I6500").NumberFormat = "#.##0,00"
    Range("J2:J6500").NumberFormat = "mmmm/yyyy"
    Range("O:P").ClearContents
    rr = Range("A" & Rows.Count).End(xlUp).Row
    For i = 2 To rr
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.Createitem(0)
    'On Error Resume Next
    With OutMail
    .To = Cells(i, 2)
    .cc = Cells(i, 3)
    .bcc = ""
    .Subject = Cells(i, 4)
    .body = "test invio e-mails"
    'Cells(I, 5) & Trim(Cells(I, 8)) & " " & "test e prova"
    .attachments.Add (Cells(i, 6) & Cells(i, 7))
    '.display questo comando visualizza la finestra del messaggio di outlook e in caso di
    ' invio di email multiple fa sfarfallare il monitor
    .send
    Application.SendKeys "%I" ' non fa uscire la finestra di Outlook che autorizza l'invio
    End With
    'On Error Resume Next 'con questo comando anche in caso di errore va avanti
    On Error GoTo ERRORE
    Cells(i, 15) = "INVIATA"
    Set OutMail = Nothing
    Set OutApp = Nothing
    Application.SendKeys "%I"
    Next i
    ERRORE:
    Cells(i, 16) = "ERRORE, NON INVIATA"
    Application.ScreenUpdating = True
    End Sub
    



  • di Vecchio Frac data: 15/04/2013 17:34:06

    Per riprendere dopo l'errore e proseguire, registrando però l'errore, ti manca Resume Next. Altrimenti incontra End Sub e esce :)

    ...
    Next i
    Exit Sub '<--- questo devi metterlo altrimenti vengono eseguite le istruzioni successive anche se non ci sono errori!
    ERRORE:
    Cells(i, 16) = "ERRORE, NON INVIATA"
    Application.ScreenUpdating = True
    Resume Next '<--- questo devi metterlo per proseguire dopo l'istruzione che ha dato errore!

    End SUb





  • di nichicanta (utente non iscritto) data: 15/04/2013 21:24:49

    Grazie Vecchio Frac, domani mattina provo la sub e ti facci sapere, non ho il file sul computer fisso, bensì sul mio portatile che h lasciato in ufficio.
    A presto.



  • di nichicanta (utente non iscritto) data: 16/04/2013 16:40:02

    Vecchio Frac,ho sistemato il codice con il tuo precedente consiglio ma vorrei che, in caso di errore mi comparisse un msgbox che mi avvertisse e mi dicesse a quali istituti non è stata inviata la mail. per favore analizza questo listato e fammi capire perchè si posizione alla riga successiva (cioè quella senza destinatari e senza allegati) quando io vorrei che si fermasse alle righe con dati e nello stesso range di dati rilevare se la mail e' stata inviata con successo oppure no ( e questo dovrebbe essere rappresentato tutto nella msgbox)
    io ho fatto tanti tentativi, senza successo ( o meglio solo parzialmente facendo uscire il messaggio invio mail terminato)



  • di nichicanta (utente non iscritto) data: 16/04/2013 16:43:45

    scusatemi amici del forum non ho allegato il codice.
     
    Sub inviamail()
    Application.ScreenUpdating = False
    Dim OutApp As Object
    Dim EmailAddr As String
    Dim subj As String
    Dim BodyText As String
    Foglio1.Select
    Range("I2:I6500").Activate
    Range("I2:I6500").NumberFormat = "#.##0,00"
    Range("J2:J6500").NumberFormat = "mmmm/yyyy"
    Range("O:P").ClearContents
    rr = Range("A" & Rows.Count).End(xlUp).Row
    For i = 2 To rr
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.Createitem(0)
    'On Error Resume Next
    With OutMail
    .To = Cells(i, 2)
    .cc = Cells(i, 3)
    .bcc = ""
    .Subject = Cells(i, 4)
    .body = "aaaa"
    
    'Cells(I, 5) & Trim(Cells(I, 8)) & " " & "ZZZZZZZZ:"
    .attachments.Add (Cells(i, 6) & Cells(i, 7))
    '.display questo comando visualizza la finestra del messaggio di outlook e in caso di
    ' invio di email multiple fa sfarfallare il monitor
    .send
    Application.SendKeys "%I" ' non fa uscire la finestra di Outlook che autorizza l'invio
    End With
    'On Error Resume Next 'con questo comando anche in caso di errore va avanti
    On Error GoTo ERRORE
    Cells(i, 15) = "INVIATA"
    Set OutMail = Nothing
    Set OutApp = Nothing
    Application.SendKeys "%I"
    Next i
    ERRORE:
    Cells(i, 16) = "ERRORE, NON INVIATA"
    MsgBox ("La mail non è stata inviata alla seguente finanziaria :") & Cells(i, 11).Value
    'If Cells(i, 16) = "ERRORE, NON INVIATA" Then
    'MsgBox ("mail non inviata a:") & ActiveCell.Offset(0, -6).Value
    'End If
    Application.ScreenUpdating = True
    Resume Next
    MsgBox ("Invio multimail completato")
    End Sub



  • di nichicanta (utente non iscritto) data: 16/04/2013 17:02:08

    Amici del forum sono riuscito in parte a risolvere la mia problematica, vorrei che fossero confrontati (due elenchi di file con stessa estensione e stesso nome) che si trovano uno in un range di celle sul foglio di lavoro attivo e l'altro in una cartella chiamata con un nome a piacere, al fine di essere avvertiti dei file che non sono presenti nella cartella dove vengono salvati, in formato pdf i file in argomento).
    Vi saluto e Vi ringrazio
     
    Sub elencoFile()
    Dim percorso As String, tipo As String, fileDaTrovare As String, elenco As String
    Dim elencoFile As String
    percorso = "C:Documents and SettingsxxxxxDesktopOTTOBRE 2012" '<=== da cambiare ovviamente
    tipo = "*.pdf"
    fileDaTrovare = percorso & tipo ' qui potresti anche mettere il nome file con estensione
    If Dir(fileDaTrovare) = "" Then
    MsgBox "File: " & fileDaTrovare & " (non presenti)"
    Exit Sub
    End If
    fileDaTrovare = Dir(percorso & tipo)
    Do While fileDaTrovare <> ""
    If fileDaTrovare <> "" Then
    MsgBox ("Trovato " & fileDaTrovare)
    End If
    fileDaTrovare = Dir
    Loop
    MsgBox (fileDaTrovare)
    End Sub



  • di nichicanta (utente non iscritto) data: 24/04/2013 19:34:00

    Ok, saluti