问题描述
我无法让 excel 将第三行视为单独的数据行。我的代码正在将第三行的所有附件添加到电子邮件中,其中包含从第二行生成的信息。我怎样才能让它循环第 2 行到最后一行数据。我正在尝试创建一个 excel,它将使用每个单元格中填写的信息通过电子邮件发送变量数据。我正在使用当前的代码,因为这是我让签名行工作的唯一方法。
Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("Sheet1")
Dim OutApp As Object
Dim OutMail As Object
Dim strbody As String
Dim I As Integer
Dim last_row As Integer
Set OutApp = CreateObject("outlook.application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
last_row = Application.WorksheetFunction.CountA(sh.Range("A:A"))
For I = 2 To last_row
.display
.SentOnBehalfOfName = sh.Range("A" & I).Value
.To = sh.Range("B" & I).Value
.CC = sh.Range("C" & I).Value
.Subject = sh.Range("D" & I).Value
.HTMLBody = strbody & "<br>" & .HTMLBody
If sh.Range("F" & I).Value <> "" Then
.attachments.Add sh.Range("F" & I).Value
End If
If sh.Range("G" & I).Value <> "" Then
.attachments.Add sh.Range("G" & I).Value
End If
If sh.Range("H" & I).Value <> "" Then
.attachments.Add sh.Range("H" & I).Value
End If
我不认为代码的最后一部分值多少它只是 strbody =,我最初希望主体也是一个变量。这提出了无法使用签名行的永无止境的问题。任何帮助将不胜感激我像鸭子一样被困。
解决方法
我认为您的想法可能如下所示。该代码创建了一个电子邮件文本,其中包括工作表中的一些片段,然后可以将这些片段分配给 HTMLbody
。
Dim Txt As String
Dim Line As String
Dim C As Long
Txt = "Dear Sir," & vbNewLine & vbNewLine & _
"Please take note of the following." & vbNewLine
Line = ""
For C = 6 To 8
With sh.Cells(i,C)
If Len(.Value) Then
If Len(Line) Then Line = Line & ","
Line = Line & .Value
End If
End With
Next C
If Len(Line) Then Txt = Txt & Line & vbNewLine
Txt = Txt & "Please get back to me ASAP." & vbNewLine & vbNewLine
Txt = Txt & " Regards" & vbNewLine & "John Doe"