Я пытаюсь прокрутить список рабочих листов, сохранить каждую из них в виде отдельной книги, а затем отправить их как вложение по почте.Отправлять почту через Outlook - Ошибка 287
Однако при запуске приведенного ниже кода я заканчиваю ошибкой 287, вызванной .Send. У меня есть перспектива открытая, так что это не проблема. Если я изменю .Отправить в .Display, письма будут сгенерированы как черновики, как показано правильно, с прикрепленным правильным листом.
Sub SendWorksheetsByMail()
Dim wb As Workbook
Dim destinationWb As Workbook
Dim OutApp As Outlook.Application
Dim OutMail As Outlook.MailItem
Set wb = Workbooks("Test.xlsm")
Application.EnableEvents = False
Application.ScreenUpdating = False
For Each ws In wb.Worksheets
'Ignore Summary and Config
If ws.Name <> "Summary" And ws.Name <> "Config" Then
'On Error Resume Next
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(olMailItem)
ws.Copy
Set destinationWb = ActiveWorkbook
destinationWb.SaveAs "C:\****************\" & ws.Name & ".xlsx", FileFormat:=51
With OutMail
.To = "*******************"
.Subject = "Test"
.Body = "Test"
.Attachments.Add destinationWb.FullName
.Send
End With
Set OutMail = Nothing
Set OutApp = Nothing
End If
Next ws
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Edit: «Он также не даже без вложения По существу генерируя сообщение, содержащее только тему и текст.„Тест“.»
Любые предложения по тому, как это решить? Это сэкономит много времени, чтобы не нажимать «Отправить» для каждой отдельной почты, так как количество отправляемых писем может стать довольно большим.
Вы пробовали '.Save' перед' .Send'? Просто мысль. –
Любопытно, зачем включать 'OutMail' в строку' OutMail.Attachments.Add destinationWb.FullName', когда он находится в 'With OutMail'? – BruceWayne
Typo, написал это без начала и подумал, что сначала это проблема, связанная с приложением, так что он принял эту часть. А потом просто вклеил его, не меняя его. Однако работает как wazs. Но обновит код выше. – johankr