Согласно критериям «копировать отфильтрованные диапазоны» должны быть вставлены в электронное письмо с текстом, указанным в «strText», как html. Если критерии не заполнены, то текст, указанный в "strText2", берется и вставляется в электронное письмо.
Проблема в том, что в электронное письмо копируется только текст в "strText" без скопированного диапазона. Во-вторых, в строке «Другое» код «.HTMLBody = strText2» не будет, поскольку он идет непосредственно на лист.
("Функция GetBoiler ..." исключена из-за простоты)
Sub Mail_Klicken()
Dim olApp As Object
Dim datDatum As Date
Dim StrBody As String
Dim intZeile As Integer
Dim rng As Range
Dim strMailverteilerTo As String
Dim strMailverteilerCC As String
Dim strText As String
Dim strFilename As String
Dim loLetzte As Long
strMailverteilerTo = "[email protected]
strText = "<span style='font-size:10.0pt;font-family:""Arial"",""sans-serif"";color:black'>Hello,<br><br> xxxx:<br><br>"
strText2 = "<span style='font-size:10.0pt;font-family:""Arial"",""sans-serif"";color:black'>hello,<br><br>this is the second text.<br><br>"
Application.DisplayAlerts = True
Set olApp = CreateObject("Outlook.Application")
With olApp.CreateItem(0)
.to = strMailverteilerTo
.Subject = "asdf checked"
strFilename = "Standard"
If Application.UserName = "wert" Then strFilename = "Signatur allg.1"
strText = strText & "" & GetBoiler(Environ("appdata") & "\Microsoft\Signatures\" & strFilename & ".htm")
With Worksheets("Auswertung")
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range("$A$7:$D$" & loLetzte).AutoFilter Field:=4, Criteria1:=">0"
If .AutoFilter.Range.SpecialCells(xlCellTypeVisible).Rows.Count > 1 Then
.AutoFilter.Range.Offset(1).Resize(.AutoFilter.Range.Rows.Count - 1). _
SpecialCells(xlCellTypeVisible).Copy
Else
'take only the "strText2"
End If
.AutoFilterMode = False
End With
.HTMLBody = strText
.Display
End With
Set olApp = Nothing
End Sub
strText
присвоено значение? Вы установилиBodyFormat
сообщения наolFormatHTML
? - person Comintern   schedule 03.09.2018Sub
, вам не хватает кучи кода, и ваша немедленная ошибка связана с тем, что вы вызываете.HTMLBody
на своем рабочем листе в блокеWith
. Я также нигде не вижу, чтобы вы действительно писали электронное письмо. Наконец, ваш HTML должен быть действительным, то есть он должен включать элементы<html>
иbody
. Есть несколько хороших примеров отправки электронной почты из Excel - этот ответ может стать хорошим началом. - person Comintern   schedule 03.09.2018.HTMLBody = strText
, это должно быть для просмотра, а не для вашего рабочего листа? потому что в настоящий момент вы пытаетесь использовать это на своем листе, и это не поддерживается. Попробуйте создать и просмотреть объект (или сослаться на него) ... - person Zac   schedule 03.09.2018