2017-07-31 4 views
1

J'ai une macro d'accès qui exécute un ensemble de requêtes Netezza et télécharge les résultats dans une base de données. Il ouvre puis actualise un fichier Excel qui utilise ces données et enregistre le fichier dans plusieurs emplacements. Enfin, il compose un email automatisé et l'envoie à une liste de distribution. Quand je lance manuellement la macro, tout fonctionne parfaitement à 100%. Pour me faciliter la vie, j'utilise Windows Task Scheduler (Windows 10) pour déclencher automatiquement la macro une fois par jour, et c'est là que se situe mon problème. Le Planificateur de tâches déclenche la macro sans aucun problème, toutes les requêtes sont actualisées, les fichiers Excel sont sauvegardés, mais l'e-mail n'est pas envoyé.Accès 2013 - Envoi automatique d'un courrier électronique avec Outlook et le planificateur de tâches Windows

Voici le code SendOutlookEmail que j'utilise

Sub sendOutlookEmail() 

Dim oApp As Outlook.Application 
Dim oMail As MailItem 
Dim SpDate As String 
Dim Signature As String 
Dim StrPath As String 
Dim StrFilter As String 
Dim StrFile As String 

SpDate = Format(Now() - 1, "yyyy-mm-dd") 


Set oApp = CreateObject("Outlook.application") 

Set oMail = oApp.CreateItem(olMailItem) 
With oMail 
    .Display 
End With 

    Signature = oMail.HTMLBody 

With oMail 

    .SentOnBehalfOfName = "My Email" 
    .To = "CCO Reporting" 
    .Subject = "AHT - ACW Dashboard - " & SpDate 
    .HTMLBody = "<span LANG=EN>" _ 
       & "<font FACE=SegoeUI SIZE = 3>" _ 
       & "The IB/OB AHT - ACW reports have been updated and placed in the following folder:" _ 
       & "<br><br>" _ 
       & "<a href='File Location'>File Location</a>" & "<br><br><br></font></span>" _ 
       & Signature 
    '.Attachments.Add (StrPath & StrFile) 
    '.Display 
    .Send 

End With 

On Error GoTo 0 

Set oMail = Nothing 
Set oApp = Nothing 
End Sub 

Voici les paramètres du planificateur de tâches Task Scheduler

Répondre

0

Peut-être Outlook ne tout simplement pas assez de temps pour envoyer le message, comme se ferme immédiatement après que le message est déplacé vers la boîte d'envoi (.send n'envoie pas le message autant que je sache, mais le déplace simplement dans la boîte d'envoi et déclenche un envoi pour tous les éléments qui s'y trouvent).

Essayez d'ajouter manuellement un envoi/réception, pour faire attendre d'accès pour Outlook pour envoyer effectivement les mails (ajouter ceci à votre vba avant la Set oApp = Nothing):

' Synchronizes (ie sends/receives) OL folders. 
' Ref: http://msdn.microsoft.com/en-us/library/ff863925.aspx 

Dim objNsp As Outlook.NameSpace 
Dim colSyc As Outlook.SyncObjects 
Dim objSyc As Outlook.SyncObject 
Dim i As Integer 

On Error GoTo SyncOL_Err 



Set objNsp = oApp.Application.GetNamespace("MAPI") 
Set colSyc = objNsp.SyncObjects 

For i = 1 To colSyc.Count 
    Set objSyc = colSyc.Item(i)  
    Debug.Print objSyc.Name 
    objSyc.start 
Next 



Set objNsp = Nothing: Set colSyc = Nothing: Set objSyc = Nothing 
+0

hmm, qui ne semble pas fixer Lorsque je l'exécute dans le planificateur de tâches, il raccroche maintenant sur la boucle, mais aucun problème ne survient dans la macro normale. –