Errore su codice per invio email da access

Anonimo
2017-07-11T19:17:03+00:00

Ciao a tutti,

dopo un lungo tempo di riposo, ho ripreso e rielaborare un dbase per la gestione della prenotazione delle auto della mia azienda.

Dopo una lunga verifica mi sono ricordato che, Sandro mi aveva scritto il codice per la compilazione automatica delle mail da inviare ai soggetti interessanti.

Ho fatto alcune prove per l'invio delle email è il codice mi restituisce un errore, che non riesco a capire da cosa dipende.

Il codice è il seguente:

Option Compare Database

Option Explicit

Private Const strPath As String = "C:\reports"

Private Sub Form_Load()

Dim rst             As DAO.Recordset

Dim strname         As String

Dim strSubPath      As String

Dim oggettoEmail    As String

Dim testoEmail      As String

strSubPath = Trim(Str(Year(Date))) & "-" & String(1, "0") & Month(Date)

'Set rst = Me.RecordsetClone

Set rst = DBEngine(0)(0).OpenRecordset("q_dipendentiPrenotazioni", dbOpenDynaset)

rst.MoveFirst

oggettoEmail = "invio report prenotazione settimana" & DatePart("ww", Date) + 1

Do While Not rst.EOF

   ' Me.Bookmark = Me.RecordsetClone.Bookmark

        strname = strPath & strSubPath & "" & rst.Fields("fullname") & "_" & rst.Fields("id") & "_" & ".pdf"

        DoCmd.OpenReport "Prenotazioniprossimasettimana", acViewPreview, , "dipendente=" & rst.Fields("id"), acHidden

       DoCmd.OutputTo acOutputReport, "Prenotazioniprossimasettimana", acFormatPDF, strname

        testoEmail = "Gent.le Sig." & rst.Fields("fullname") & vbCrLf & _

            " come da oggetto" & vbCrLf & _

            " distinti saluti" & vbCrLf & _

            " la Direzione."

        sendEmail2OL rst!Email, strname, oggettoEmail, testoEmail

    rst.MoveNext

    DoCmd.Close acReport, "Prenotazioniprossimasettimana"

Loop

setOl2Nothing

Set rst = Nothing

End Sub

L'errore mi viene restituito alla riga in grassetto e sottolineata

Qualcuno può aiutarmi a capire ?

grazie

Luca

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

20 risposte

Ordina per: Più utili
  1. Anonimo
    2017-07-13T06:20:51+00:00

    Ciao Sandro

    ho eliminato l'ultima &; l'errore è scomparso, ho poi rivisto il codice con molta più attenzione ed apportato alcune piccole imperfezioni e adesso funziona alla grande.

    Mi crea il report in formato pdf, lo salva nella cartella reports con il nome che ho deciso di attribuire e partono le mail senza errori (adesso faccio una verifica sul campo inviando a me stesso le email)

    L'ultima mia curiosià. Adesso l'email viene inviata solo al responsabile del progetto; se volessi che la stessa mail venga anche inviata, per cc., al dirigente/Rup di riferimento basta apportare queste modifiche? ... oppure c'è molto di più da fare?

    Modulo1

    Public Sub sendEmail2OL(ByVal strConsignee As String, _

                            ByVal StrConsigneeCC As String_

                            ByVal strname As String, _

                            ByVal oggettoEmail As String, _

                            ByVal testoEmail As String)

       newOlIstance

        Dim mailOutlook As Object

        Dim olMailItem  As Object

        Set mailOutlook = OlApp.CreateItem(0)

        With mailOutlook

            .Subject = oggettoEmail

            .To = strConsignee

            .Cc = strConsigneeCC           

            .Body = testoEmail

            .Attachments.Add strname

            '.Display

            ' send se la si vuole inviare

            .Send

        End With

        Set mailOutlook = Nothing

     End Sub

    Private Sub Invio_Email_Click()

    sendEmail2OL rst!EmailResponsabileUO, rst!EmailRUP, strname, oggettoEmail, testoEmail

    le parti aggiunte sono segnate in grassetto e corsivo.

    Ciao

    Luca

    PS: Mi piacerebbe approfondire per l'utilizzo di ThunderBird perchè è un client che sostituisce Outlook su molte postazioni dei miei colleghi.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2017-07-12T18:12:45+00:00

    ciao Luca,

    elimina la & finale relativa alla riga "l'ufficio  di direzione....".

    Quindi senza ulteriore concatenazione perché non serve concatenare più nulla, visto che la frase finisce li.

    Per il resto pubblica una tua demo che vediamo...non riesco a darti ulteriori indicazioni.

    La query restituisce righe...? hai verificato...?

    Non conosco ThunderBird non so se dispone di un modello ad oggetto .... forse anche si...

    Con OL l'automazione è invece fattibilissima, anzi...

    Ciao, Sandro

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2017-07-12T17:47:00+00:00

    Ciao Sandro

    ho provato a modificare il codice relativo all'invio delle email, ma mi restituisce un errore (per il momento).

    Dunque ho cambiato l'OpenRecordset facendo puntare ad una query che contiene alcuni elementi.

    Poi ho sostituito alcuni campi ed infine ho cambiato il testo della email.

    Il codice non funziona e mi retituisce un errore che potrai vedere nell'immagine.

    Ti allego anche la struttura della query del recordset.

    Grazie per l'aiuto

    Luca

    PS: nella cartella reports è presente una cartella 2017-07 ma al suo interno non è presente nessun report generato

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2017-07-12T06:25:04+00:00

    Ciao Sandro,

    come sempre corri in aiuto del sottoscritto che ha tanta voglia di crescere nel mondo di access, ma poca conoscenza degli strumenti che offre access.

    Immagino che il dbase che hai condiviso sia quello giusto e contiene il codice corretto.

    In questo momento sono in ufficio e come client di posta usiamo Thunderbird e quindi il codice che si appoggia a Outlook non funzionerà.

    Ti chiedo, a titolo informativo, se al posto di outlook si possa impostare come client Thunderbird?

    In ogni caso proverò il codice a casa sul il mio pc dove ho installato outlook

    Grazie mille, Sandro, sempre pronto e gentile.

    A presto

    Luca

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2017-07-11T20:38:06+00:00

    ciao Luca,

    la demo da cui è tratto il codice dovrebbe essere questa :

    demo Mails

    e si appoggia ad automazione tra access e Outlook.

    Dacci un occhio.

    Crea la cartella reports in c:\ prima di eseguirla.

    HTH-

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento