Inviare e-mail multiple con un unico pulsante

di il
10 risposte

Inviare e-mail multiple con un unico pulsante

Buonasera,
sono di nuovo qui con un altro problema che temo sarà più difficile risolvere.
Ho un report con il riepilogo pagamenti e da inviare ad ogni cliente.
In un primo momento lo facevo cliccando un pulsante per ogni cliente. vorrei invece, cliccando su un unico pulsante inviarlo a tutti.
Ho inserito questo codice ma restituisce il messaggio di errore: "Errore di compilazione: Tipo definito dall'utente non definito" evidenziando questa parte del codice Dim rst As DAO.Recordset
Inserisco di seguito l'intero codice
Private Sub Comando22_Click()
Dim rst             As DAO.Recordset
Dim strname         As String
Dim oggettoEmail    As String
Dim testoEmail      As String

'Set rst = Me.RecordsetClone
Set rst = DBEngine(0)(0).OpenRecordset("PGS_Contatti", dbOpenDynaset)
rst.MoveFirst

oggettoEmail = "INVIO COMUNICAZIONE PAGAMENTO ATTIVITA'" & " " & [Cognome] & " " & [Nome]

Do While Not rst.EOF
   ' Me.Bookmark = Me.RecordsetClone.Bookmark
    
        strname = "\\192.168.0.188\A\GESTIONALE_VA\ALUNNI\ORDINE TUTE_GREMBIULI\pdf_perMail\ComunicazionePagamentoAttività " & " " & [Cognome] & " " & [Nome] & ".pdf"
        DoCmd.OpenReport "PgsComunicazionePagamento", acViewPreview, , "CodiceAlunno=" & rst.Fields("CodiceAlunno"), acHidden
        DoCmd.OutputTo acOutputReport, "PgsComunicazionePagamento", acFormatPDF, strname
                            
        testoEmail = "Gentile Famiglia" & rst.Fields("Cognome") & vbCrLf & _
            " inviamo quanto in oggetto" & vbCrLf & _
            " Cordiali saluti" & vbCrLf & _
            " ******."
    
        sendEmail2OL rst!EmailFalsa, strname, oggettoEmail, testoEmail
 
    rst.MoveNext
    DoCmd.Close acReport, "PgsComunicazionePagamento"
Loop

setOl2Nothing

Set rst = Nothing
       
End Sub
Grazie

10 Risposte

  • Re: Inviare e-mail multiple con un unico pulsante

    Hai i riferimenti a DAO o ACEDAO nel tuo progetto...?
    Il riferimento cambia a seconda della Versione e del Formato del File... che nel tuo caso è un SERGETO...
  • Re: Inviare e-mail multiple con un unico pulsante

    Il riferimento è ACEDAO.
    L'access utilizzato è la versione Microsoft365 - Office 16
    Grazie
  • Re: Inviare e-mail multiple con un unico pulsante

    Per riferimenti, intendo che la libreria ACEDAO deve essere referenziata nel VBA come riferimento esplicito.
    Da VBA apri da menù I riferimenti e devi avere
    "Microsoft Office 14.0 Access Database engine Object Library".

    Il fatto poi che tu abbia A365 non è sufficiente, ti ho chiesto il formato del file quindi se MDB o ACCDB in quanto i riferimenti sopra non vanno bene se il tuo file è un MDB ma sol9 se è un ACCDB, MA se per caso hai convertito il file da MDB ---> ACCDB e non hai sostituito i riferimenti ti trovi DAO 3.6 che non va bene...

    Verifica bene queste cose.
  • Re: Inviare e-mail multiple con un unico pulsante

    @Alex ha scritto:


    Per riferimenti, intendo che la libreria ACEDAO deve essere referenziata nel VBA come riferimento esplicito.
    Da VBA apri da menù I riferimenti e devi avere
    "Microsoft Office 14.0 Access Database engine Object Library".

    Il fatto poi che tu abbia A365 non è sufficiente, ti ho chiesto il formato del file quindi se MDB o ACCDB in quanto i riferimenti sopra non vanno bene se il tuo file è un MDB ma sol9 se è un ACCDB, MA se per caso hai convertito il file da MDB ---> ACCDB e non hai sostituito i riferimenti ti trovi DAO 3.6 che non va bene...

    Verifica bene queste cose.
    il riferimento da VBA
    Microsoft Office 16.0 Access Database Object Library
    il file è in formato MDB.
    Quindi devo convertirlo in ACCDB per utilizzare quei riferimenti, ci provo!
    Credo che per l'emergenza utilizzerò ancora il pulsante per ogni singolo cliente e studio un po' questo codice
    Ti chiedo scusa e ti ringrazio per la pazienza.
  • Re: Inviare e-mail multiple con un unico pulsante

    No semplicemente non hai capito....
    Non hai ACEDAO ma DAO in quanto hai un file MDB e non devi convertire per usarlo, ma PUOI convertirlo se ritieni sia meglio, ma deve andare in entrambe lenversioni se allineate ai riferimenti.
    Temo ti possa mancare qualche riferimento...
    Trovi un MANCA nei riferimenti...?
  • Re: Inviare e-mail multiple con un unico pulsante

    @Alex ha scritto:


    No semplicemente non hai capito....
    Non hai ACEDAO ma DAO in quanto hai un file MDB e non devi convertire per usarlo, ma PUOI convertirlo se ritieni sia meglio, ma deve andare in entrambe lenversioni se allineate ai riferimenti.
    Temo ti possa mancare qualche riferimento...
    Trovi un MANCA nei riferimenti...?
    sono tornata tra i riferimenti disponibili ed ho selezionato
    Microsoft DAO 3.51 Object Library
    che prima era deselezionato
    in effetti non mi dà più quell'errore di compilazione ma devo rivedere il codice perché credo ci siano altri errori!
    Grazie ancora!
  • Re: Inviare e-mail multiple con un unico pulsante

    Ma non hai la versione 3.6...?

    Il resto del codice non l'ho guardato bene ma si ci sono alcune cose da sistemare...
    Userei il Recordsetclone che punta ai records di maschera, anche eventualmente filtrati, e non TUTTA la Query... poi il report lo puoi chiudere dopo l'output... devi mettere un doevents nel loop e forse qualche wait ma non si vede il codice SendMail sempre segreto...
  • Re: Inviare e-mail multiple con un unico pulsante

    @Alex ha scritto:


    Ma non hai la versione 3.6...?

    Il resto del codice non l'ho guardato bene ma si ci sono alcune cose da sistemare...
    Userei il Recordsetclone che punta ai records di maschera, anche eventualmente filtrati, e non TUTTA la Query... poi il report lo puoi chiudere dopo l'output... devi mettere un doevents nel loop e forse qualche wait ma non si vede il codice SendMail sempre segreto...
    La versione 3.6 ce l'ho, ma quando tento di inserirla mi restituisce il messaggio "Errore caricamento dll"
    La maschera ha già un filtro, quindi invia l'email solo alle persone interessate.
    Comunque sono riuscita anche con l'invio automatico delle e-mail e ne sono felice. L'unico problema è il messaggio di attenzione di outlook "un programma sta tentando di inviare un messaggio di posta elettronica per conto dell'utente...". E' un problema dell'antivirus non aggiornato
    Grazie mille!!!!
  • Re: Inviare e-mail multiple con un unico pulsante

    grazgrace ha scritto:


    @Alex ha scritto:


    Ma non hai la versione 3.6...?

    Il resto del codice non l'ho guardato bene ma si ci sono alcune cose da sistemare...
    Userei il Recordsetclone che punta ai records di maschera, anche eventualmente filtrati, e non TUTTA la Query... poi il report lo puoi chiudere dopo l'output... devi mettere un doevents nel loop e forse qualche wait ma non si vede il codice SendMail sempre segreto...
    La versione 3.6 ce l'ho, ma quando tento di inserirla mi restituisce il messaggio "Errore caricamento dll"
    La maschera ha già un filtro, quindi invia l'email solo alle persone interessate.
    Comunque sono riuscita anche con l'invio automatico delle e-mail e ne sono felice. L'unico problema è il messaggio di attenzione di outlook "un programma sta tentando di inviare un messaggio di posta elettronica per conto dell'utente...". E' un problema dell'antivirus non aggiornato
    Grazie mille!!!!
    Comunque questo è il codice che ho utilizzato
    Private Sub Comando22_Click()
     Dim DestinatarioMail    As String ' contiene l'indirizzo email
        Dim OggettoMail         As String ' contiene l'oggetto della email
        Dim CorpoMail           As String ' contiene il testo del messaggio
        Dim rs                  As DAO.Recordset
         
        Set rs = DBEngine(0)(0).OpenRecordset("PGS_Contatti", dbReadOnly)
        If Not (rs.EOF And rs.BOF) Then
            rs.MoveFirst
            Do Until rs.EOF
                DestinatarioMail = rs!EmailFalsa
                OggettoMail = "COMUNICAZIONE PAGAMENTO ATTTIVITA' EXTRACURRICOLARI" & " " & rs![Cognome] & " " & rs![Nome]
                CorpoMail = "Gentile Famiglia," & vbCrLf & "inviamo la comunicazione di pagamento delle attività extra" & vbCrLf & "Nel file allegato troverete tutte le indicazioni per effettuare il versamento." & vbCrLf & "Cordiali saluti." & vbCrLf & "GF" & vbCrLf & "PGS"
                DoCmd.OpenReport "PgsComunicazionePagamento", acViewPreview, , "CodiceAlunno=" & rs!CodiceAlunno, acHidden
                DoCmd.SendObject acSendReport, "PgsComunicazionePagamento", acFormatPDF, DestinatarioMail, , , OggettoMail, CorpoMail, False
                DoEvents
                rs.MoveNext
                DoCmd.Close acReport, "PgsComunicazionePagamento", acSaveNo
            Loop
        End If
        rs.Close
        Set rs = Nothing
    End Sub
    
  • Re: Inviare e-mail multiple con un unico pulsante

    grazgrace ha scritto:


    ...
    La versione 3.6 ce l'ho, ma quando tento di inserirla mi restituisce il messaggio "Errore caricamento dll"
    La maschera ha già un filtro, quindi invia l'email solo alle persone interessate.
    Appunto, per questo bastava ciclare il RecordsetClone...!

    grazgrace ha scritto:


    Comunque sono riuscita anche con l'invio automatico delle e-mail e ne sono felice.
    Quando soddisfa te, va bene a tutti.

    grazgrace ha scritto:


    L'unico problema è il messaggio di attenzione di outlook "un programma sta tentando di inviare un messaggio di posta elettronica per conto dell'utente...". E' un problema dell'antivirus non aggiornato
    Grazie mille!!!!
    Prego
Devi accedere o registrarti per scrivere nel forum
10 risposte