Мне понадобится помощь с кодом VBA в Excel (Office 365), который будет принимать Excel диапазон или таблицу и добавлять его в тело письма при отправке почты.Важно, чтобы он работал в фоновом режиме без открытого почтового клиента (Outlook).
У меня есть рабочий код (отлично работает с Outlook в фоновом режиме).Недостатком является то, что я могу связывать только определенные или объединенные ячейки с телом почты (что по сути означает текст, а не простую таблицу).При связывании правильного диапазона (скажем, с 3 столбцами и 5 строками) я получаю сообщение об ошибке
«Ошибка времени выполнения« 13 »: несоответствие типов»
Sub Email()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
xMailBody = "E-MAIL BODY TEXT" & vbNewLine & _
Range("ARRAY")
On Error Resume Next
With xOutMail
.To = "test@mail.com"
.CC = ""
.BCC = ""
.Subject = "Mail subject"
.Body = xMailBody
.Send
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing
End Sub
Я выполняю другой код, который действительно может получить диапазон (своего рода) из листа и отправить его в виде таблицы, однако он, к сожалению, работает только тогда, когда Outlook также открыт и работает и выдает сообщение об ошибкев противном случае.
Sub Email2()
Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("Sheet1")
Dim lr As Integer
lr = sh.Range("D" & Application.Rows.Count).End(xlUp).Row
sh.Range("D5:F" & lr).Select
With Selection.Parent.MailEnvelope.Item
.to = "test@mail.com"
.bcc = ""
.Subject = ""
.send
End With
End Sub
Какие-либо советы по корректировке существующего кода или по новому подходу?