Outlook отправляет электронные письма очень медленно.
Более того, мой ЦП работает на 15-20%, а мой 16-ГБ ОЗУ загружен на 50% ... так что это может быть проблемой производительности кода или распределения ресурсов.
У меня естьвключил мой код ниже:
'my code
Sub SendMail(what_address As String, subject_line As String, mail_body As String)
Dim olApp As Outlook.Application
Set olApp = CreateObject("Outlook.Application")
Dim olMail As Outlook.MailItem
Set olMail = olApp.CreateItem(olMailItem)
With olMail
.To = what_address
.Subject = subject_line
.BodyFormat = olFormatHTML
.Attachments.Add "C:\Users\User\Documents\Association\Event Brochure\BROCHURE.pdf"
.HTMLBody = mail_body
.Send
End With
End Sub 'Tells outlook to send an input, with an attachment I selected
Sub SendMassMail()
row_number = 1
Do
DoEvents
row_number = row_number + 1
Dim mail_body_message As String
Dim name As String
Dim mrmrs As String
Dim company_name As String
mail_body_message = Sheet1.Range("I2")
name = Sheet1.Range("B" & row_number)
mrmrs = Sheet1.Range("C" & row_number)
company_name = Sheet1.Range("D" & row_number)
mail_body_message = Replace(mail_body_message, "replace_mrmrs_here", mrmrs)
mail_body_message = Replace(mail_body_message, "replace_name_here", name)
mail_body_message = Replace(mail_body_message, "replace_company_here", company_name)
Call SendMail(Sheet1.Range("A" & row_number), "Event Sponsorship", mail_body_message)
Loop Until row_number = 500
End Sub
Этот код представляет собой два макроса, которые я создал в листе Excel, который содержит адреса электронной почты в столбце A, имена в столбце B, Mr / Mrs в столбце C, компания в столбце Dи, наконец, тело сообщения в ячейке I2, в котором есть ключевые слова, подлежащие замене для каждого получателя.
Теперь о распределении ресурсов.В диспетчере задач я дал приоритет как Excel.exe, так и Outlook.exe.
Мой код работает плохо, потому что я вызываю другую функцию, когда использую Call SendMail?
Мой код работает плохо, потому что я использую DoEvent?Это единственный метод, который я знаю ... поэтому, если вы предлагаете другой метод, отличный от DoEvent, пожалуйста, объясните, что он делает.