Вставьте значение в соответствии с некоторыми критериями в Outlook

Согласно критериям «копировать отфильтрованные диапазоны» должны быть вставлены в электронное письмо с текстом, указанным в «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

person Yavuz Topal    schedule 03.09.2018    source источник
comment
Где strText присвоено значение? Вы установили BodyFormat сообщения на olFormatHTML?   -  person Comintern    schedule 03.09.2018
comment
Я только что добавил значение в strText. Я не установил для BodyFormat сообщения значение olFormatHTML. Решит ли это сообщение об ошибке?   -  person Yavuz Topal    schedule 03.09.2018
comment
Если это ваш полный Sub, вам не хватает кучи кода, и ваша немедленная ошибка связана с тем, что вы вызываете .HTMLBody на своем рабочем листе в блоке With. Я также нигде не вижу, чтобы вы действительно писали электронное письмо. Наконец, ваш HTML должен быть действительным, то есть он должен включать элементы <html> и body. Есть несколько хороших примеров отправки электронной почты из Excel - этот ответ может стать хорошим началом.   -  person Comintern    schedule 03.09.2018
comment
Я подозреваю, что когда вы пытаетесь установить .HTMLBody = strText, это должно быть для просмотра, а не для вашего рабочего листа? потому что в настоящий момент вы пытаетесь использовать это на своем листе, и это не поддерживается. Попробуйте создать и просмотреть объект (или сослаться на него) ...   -  person Zac    schedule 03.09.2018
comment
Я включил весь Sub сейчас. А также перефразировал вопрос, чтобы лучше понять мою цель.   -  person Yavuz Topal    schedule 04.09.2018


Ответы (1)


Ответ можно найти здесь: https://www.rondebruin.nl/win/s1/outlook/bmail2.htm

person Yavuz Topal    schedule 09.09.2018