使用第 2 行变量发送电子邮件时,Excel 无法使用第 3 行的数据识别我的循环

问题描述

我无法让 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"