Invio query per posta elettronica da Access. Invio non riuscito

Anonimo
2023-03-21T12:13:27+00:00

Buon giorno a tutti.

Con la seguente routine ho cercato di inviare il risultato di una query, in formato Excel, tramite un pulsante di comando posizionato su una maschera singola.

Private Sub Invio_Click()

Dim OutApp As Object 

Dim OutMail As Object 

Dim olMailItem 

Dim Mo, Dy, Yr As String 

Dim accessPath, EpicFilePath As String 

Dim EmailTo, Emailbcc As String 

Dim FileText As String 

Dim IntroText As String 

Dim EndText As String 

Mo = Format(Now(), "mm") 

Dy = Format(Now(), "dd") 

Yr = Format(Now(), "yyyy") 

accessPath = CurrentProject.path 

EpicFilePath = accessPath & "\Telefoni\_Aggiornati\_Al " & Yr & Mo & Dy & ".xlsx" 

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "QueryTuttiTelefoni", EpicFilePath, True 

DoCmd.SetWarnings True 

EmailTo = "******@libero.it" 

Emailbcc = "******@libero.it" 

'FileText = EpicFilePath 

IntroText = "Ciao AAAAAA, ti invio quanto in allegato per tuo interesse." 

EndText = "Cordiali saluti." 

DoCmd.SetWarnings False 

Set OutApp = CreateObject("Outlook.Application")

Set OutMail = OutApp.CreateItem(olMailItem)

With OutMail

.To = EmailTo

.BCC = Emailbcc

.Subject = "Invio elenco telefonico dei militari in forza al Nucleo."

.Body = IntroText & Chr(13) & Chr(10) & Chr(13) & Chr(10) _

      & FileText & Chr(13) & Chr(10) & Chr(13) & Chr(10) \_ 

      & EndText 

.Attachments.Add EpicFilePath

'.Send 

.Display 

End With

DoCmd.SetWarnings True

End Sub

Mi aiutate a capire cosa non va nel codice perchè non riesco ad inviare la mail.

Non ottengo nessun messaggio di errore e non capisco perchè non funziona la routine, dove sbaglio.

Ringrazio chi mi aiuta in questo.

Ciao, Nicola

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
Risposta accettata dall'autore della domanda
Anonimo
2023-03-22T12:43:12+00:00

Buon giorno a tutti.

Con le modifiche consigliate da Sandro Peruz e dopo il riavvio del mio PC, tutto è andato a buon fine.

Misteri dell'informatica.

Ciao, Nicola

La risposta è stata utile?

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2023-03-21T15:53:07+00:00

ciao Nicola,

applicando il late binding la libreria di OL non serve che sia spuntata.

imposta un punto di interruzione se segui passo passo la routine e analizza che cosa non fa che invece dovrebbe fare...

sei certo serva il setWarnings? hai controllato che effetivamente il file di xls venga esportato? sei certo che debba essere sovrascritto tutte le volte?

Facci sapere.

Sandro.

La risposta è stata utile?

0 commenti Nessun commento

5 risposte aggiuntive

Ordina per: Più utili
  1. Eliminata

    Questa risposta è stata eliminata a causa di una violazione del codice di comportamento. La risposta è stata segnalata manualmente o identificata tramite il rilevamento automatizzato prima dell'esecuzione dell'azione. Per ulteriori informazioni, fai riferimento al codice di comportamento.


    I commenti sono stati disattivati. Ulteriori informazioni

  2. Anonimo
    2023-03-21T15:25:11+00:00

    Ciao Md Abdal Khan, grazie per il cortese riscontro.

    Con le sue modifiche non va ancora, ho attivato anche la libreria di Outlook come potrà notare dall'immagine allegata.

    Private Sub Invio_Click()

    Dim OutApp As Object 
    
    Dim OutMail As Object 
    
    Dim Mo, Dy, Yr As String 
    
    Dim accessPath, EpicFilePath As String 
    
    Dim EmailTo, Emailbcc As String 
    
    Dim FileText As String 
    
    Dim IntroText As String 
    
    Dim EndText As String 
    
    Const olMailItem As Integer = 0 
    
    Mo = Format(Now(), "mm") 
    
    Dy = Format(Now(), "dd") 
    
    Yr = Format(Now(), "yyyy") 
    
    accessPath = CurrentProject.path 
    
    EpicFilePath = accessPath & "\Telefoni\_Aggiornati\_Al " & Yr & Mo & Dy & ".xlsx" 
    
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "QueryTelefoni", EpicFilePath, True 
    
    DoCmd.SetWarnings True 
    
      EmailTo = "******@libero.it"
    
     Emailbcc = "******@libero.it"
    
    'FileText = EpicFilePath 
    
    IntroText = "Ciao, ti invio quanto in allegato per tuo interesse." 
    
    EndText = "Cordiali saluti." 
    
    DoCmd.SetWarnings False 
    

    Set OutApp = CreateObject("Outlook.Application")

    Set OutMail = OutApp.CreateItem(olMailItem)

    With OutMail

    .To = EmailTo

    .BCC = Emailbcc

    .Subject = "Invio elenco telefonico dei militari in forza al Nucleo."

    .Body = IntroText & vbCrLf & vbCrLf & EndText & vbCrLf & vbCrLf & "Please find the attached file: " & EpicFilePath

    .Attachments.Add EpicFilePath

    .Send 
    

    End With

    DoCmd.SetWarnings True

    End Sub

    Ciao Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2023-03-21T13:24:49+00:00

    Ciao

    Sono Abdal e sarei felice di aiutarti con la tua domanda.

    Sulla base del codice fornito, sembra che la variabile "olMailItem" non sia definita. Questa variabile deve essere definita come una costante con il valore 0, che indica che l'elemento creato è un elemento di posta.

    Aggiungere la riga seguente all'inizio del codice, prima della procedura:

    "Const olMailItem As Integer = 0"

    Inoltre, sembra che la variabile "FileText" sia definita ma non assegnata a un valore. È possibile rimuovere questa variabile e includere il percorso del file direttamente nel corpo dell'e-mail, come segue:

    ". Body = IntroText & vbCrLf & vbCrLf & EndText & vbCrLf & vbCrLf & "Please find the attached file: " & EpicFilePath"

    Inoltre, assicurarsi di avere Outlook installato e configurato correttamente nel computer che esegue il codice. Se Outlook non è configurato correttamente, il codice potrebbe non essere in grado di creare un'istanza dell'oggetto "Outlook.Application", che può causare l'errore del codice.

    Infine, decommenta la linea ". Invia" e commenta la riga ". Visualizza" se si desidera che l'e-mail venga inviata automaticamente senza prima visualizzarla.

    Spero che questa informazione aiuti.

    Saluti

    Abdal

    Questa risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o espressioni strane.

    La risposta è stata utile?

    0 commenti Nessun commento