2017-07-31 4 views
1

私はNetezzaクエリのセットを実行し、その結果をデータベースにアップロードするアクセスマクロを持っています。次に、このデータを使用するExcelファイルを開いて更新し、ファイルをいくつかの場所に保存します。最後に自動化された電子メールを作成し、配布リストに送信します。手動でマクロを実行すると、すべてが完全に100%動作します。Access 2013 - OutlookとWindowsタスクスケジューラで自動的に電子メールを送信

私の人生を少し楽にするために、私はWindowsタスクスケジューラ(Windows 10)を使って1日1回マクロを自動的に起動しています。これが私の問題です。タスクスケジューラは、すべてのクエリが更新され、Excelファイルが保存されますが、電子メールは送信されません。ここで

は、私がここで

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 

を使用していたコードSendOutlookEmailコードは、タスクスケジューラの設定 Task Scheduler

答えて

0

はおそらく見通しはそれとして、メッセージを送信するために十分な時間を持っていないですメッセージが送信トレイに移動された後すぐに閉じられます(.sendは私が知る限りメッセージを送信しませんが、送信トレイに移動してそこのすべてのアイテムの送信をトリガーします)。

Outlookが実際にメール(Set oApp = Nothing前に、あなたのVBAにこれを追加)を送信するためのアクセスを待たせるために、手動で受信/送信を追加してください:

' 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

うーん、修正していないようですそれは、私がタスクスケジューラを介して実行すると、今はループ上でハングアップしますが、問題は通常のマクロを通して実行されます –

関連する問題