Попытка автоматизировать отправку ежедневного электронного письма на основе файла CSV, который отправляется повторно каждое утро, за исключением нерегулярных интервалов. Я устанавливаю код для запуска каждое утро в 09:34:30 и, если файл не существует, повторите попытку через 10 секунд.
Основная ошибка, с которой я сталкиваюсь, заключается в том, что если файл не существует и код повторяется, он отправляет несколько электронных писем. Ниже приведены соответствующие части кода (я отредактировал фактический URL из соображений конфиденциальности):
Sub Main()
Dim origin As Workbook
Dim dest As Workbook
Dim myURL As String
Dim WinHttpReq As Object, oStream As Object
Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
WinHttpReq.Open "GET", myURL, False
WinHttpReq.Send
If WinHttpReq.status = 404 Then
Schedule (Now + TimeValue("00:00:10"))
Exit Sub 'tried this to avoid the bug of repeated emails but it's not working
End If
If WinHttpReq.status = 200 Then
Set oStream = CreateObject("ADODB.Stream")
oStream.Open
oStream.Type = 1
oStream.Write WinHttpReq.ResponseBody
oStream.SaveToFile ThisWorkbook.Path & "\" & "file.csv", 2
oStream.Close
ThisWorkbook.Activate
ActiveWorkbook.Connections("file").Refresh
Application.Calculate
Call Mail.email
Schedule ("09:34:30")
Exit Sub
End If
End Sub
Sub Schedule(t As String)
Application.OnTime t, "Main"
End Sub