У меня есть макрос ниже, который сканирует файл Excel с электронными письмами менеджера вниз по столбцу B. Для каждого менеджера будет составлено электронное письмо / файл Excel прикреплен / и отправлен автоматически. Я смог проверить это, и он работает нормально при составлении 50 - 100.
Меня беспокоит то, что 50 - 100 электронные письма не являются хорошим показателем того, чтобы знать, будет ли это работать нормально при отправке 5000 электронных писем.
Есть ли у меня риск этого зависания или других проблем при запуске этого файла с 5000 электронными письмами?
Sub CorpCard()
Dim OutApp As Object
Dim OutMail As Object
Dim cell As Range
Application.ScreenUpdating = False
Set OutApp = CreateObject("Outlook.Application")
On Error GoTo cleanup
For Each cell In Columns("B").Cells.SpecialCells(xlCellTypeConstants)
If cell.Value Like "?*@?*.?*" And LCase(Cells(cell.Row, "C").Value) = "yes" Then
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.SentOnBehalfOfName = "urdearboy@hi.com"
.to = cell.Value
.Subject = "Your Employees With A Corporate Credit Card - EID - " & Cells(cell.Row, "D").Value
.Body = "Hi " & Cells(cell.Row, "A").Value & "," _
'Body to be patsed here
strLocation = "C:\Users\urdearboy\Desktop\File Name " & Cells(cell.Row, "D").Value & ".xlsx"
.Attachments.Add (strLocation)
.Send
End With
On Error GoTo 0
Set OutMail = Nothing
End If
Next cell
cleanup:
Set OutApp = Nothing
Application.ScreenUpdating = True
End Sub
Было бы хорошей идеей поместить мой цикл For Each
в другой цикл, например, For i = 1 to 5000 Step 50
, а затем добавить Do Events
перед началом фактического цикла, чтобы дать моему компьютеру некоторое время, чтобы наверстать упущенное, прежде чем перейти к следующим 50 электронные письма? Я не совсем уверен, входит ли это в область действия Do Events
. При необходимости я также могу предоставить спецификации компьютера.