簡體   English   中英

帶有 Excel 的 Outlook 郵件:正文和變量問題

[英]Outlook mail with excel: Issue with body text and variable

我的 .body 文本無法正常工作。

我可以讓它在 Outlook 中創建項目。 “收件人:”和“主題”是正確的,但正文不正確。
我可以將它從“Hello”包含到“以下服務線:”或包含“For y = 2 to LR1”到下一個 y。 我希望它包括兩者。 我如何連接這兩個部分? - 解決了!

If 匹配函數應該將 sht1.range("B" & y) 與 sht3.range("C" & i) 匹配。 在“y”循環中,y 從 2 到 49,而變量 i 應該保持不變,直到循環完成。 然后它應該移動到下一個 i 並重新做一遍。 這是行不通的,因為正文包含所有行 i 變量 y。 - 解決了!

Sub Test()
Dim OutApp As Object
Dim OutMail As Object

Dim Sht1 As Worksheet
Dim Sht2 As Worksheet
Dim Sht3 As Worksheet

Dim i As Long
Dim y As Long
Dim x As Long

Dim LR1 As Long
Dim LR2 As Long

Set Sht1 = ThisWorkbook.Sheets("Sheet1")
Set Sht2 = ThisWorkbook.Sheets("Sheet2")
Set Sht3 = ThisWorkbook.Sheets("Sheet3")

LR1 = Sht1.Cells(Sht1.Rows.Count, "B").End(xlUp).Row
LR2 = Sht3.Cells(Sht3.Rows.Count, "C").End(xlUp).Row

Application.ScreenUpdating = False
Set OutApp = CreateObject("Outlook.Application")

On Error GoTo Cleanup

For i = 2 To LR2

If Not IsEmpty(Sht3.Range("C" & i)) Then

Sht3.Activate
Sht3.Range("C" & i).Select

Set OutMail = OutApp.CreateItem(0)
On Error Resume Next

        With OutMail
            .To = Sht3.Range("C" & i).Offset(ColumnOffset:=1)
            .Subject = "OE input sheet " & Sht3.Range("C" & i) & ": Service Delivered = NO"
            .body = "Hello " & ActiveCell.Offset(ColumnOffset:=-1).Value & "." _
                & vbNewLine & vbNewLine & _
                "We have noticed, that you have indicated Service Deliverd = NO, while the service line still contains a value. " _
                & vbNewLine & vbNewLine & _
                "We are referring to the following service lines:" _

                For y = 2 To LR1
                Sht1.Activate
                Sht1.Range("B" & y).Select

                    If Sht1.Range("B" & y) = Sht3.Range("C" & i) Then
                        .body = .body & vbNewLine & ActiveCell.Offset(ColumnOffset:=1).Value
                    End If

                Next y
            .Save
        End With

        On Error GoTo 0
        Set OutMail = Nothing
    End If

Next i

Cleanup:
    Set OutApp = Nothing
    Application.ScreenUpdating = True
End Sub

提前致謝

mailItem 的 .body 屬性不會在正文中附加其他信息,而是完全替換正文中的信息。

因此,當您第一次使用“Hello”部分設置它時,電子郵件正文包含此信息。 當您在循環中再次設置它時,它現在只包含您在循環中設置的信息。

將循環中的行更新為:

    .body = .body & vbNewLine & ActiveCell.Offset(ColumnOffset:=1).Value

它會將新信息附加到電子郵件正文中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM