Если вы не хотите прикреплять лист, а просто отображаете данные (и при условии, что отправка письма в HTML - это нормально):
Следующая функция создает html-таблицу из диапазона Excel
Function RangeToHtmlTable(r As Range)
Dim data, row As Long, col As Long, html As String
data = r.Value2
html = "<table>"
For row = 1 To UBound(data, 1)
html = html & "<tr>"
For col = 1 To UBound(data, 2)
html = html & "<td>" & data(row, col) & "</td>"
Next col
html = html & "</tr>" & vbCrLf
Next row
html = html & "</table>"
RangeToHtmlTable = html
End Function
Вызов функции - просто замените activesheet.usedRange
на любой диапазон данных, которые вы хотите отправить:
With NewMail
...
.HTMLBody = "<h1>Here is your data</h1>" & RangeToHtmlTable(activesheet.usedRange)
end with
Обновление : отправка данных без форматирования html:
Function RangeToTable(r As Range, Optional separator As String = vbTab)
Dim data, row As Long, col As Long, table As String
data = r.Value2
table = ""
For row = 1 To UBound(data, 1)
For col = 1 To UBound(data, 2)
table = table & data(row, col) & separator
Next col
table = table & vbCrLf
Next row
RangeToTable = table
End Function
Если html не отправляется, вы должны присвоить текст .TextBody
вместо .HTMLBody
. С помощью необязательного параметра separator
вы можете определить, что вы хотите показывать между ячейками (например, "; "
)
.TextBody = "Here is your data:" & vbrLf & vbCrLf & RangeToTable(activesheet.usedRange)