计算合并的单元格并将单个邮件发送给不同单元格中的用户

时间:2018-03-08 16:42:57

标签: vba excel-vba excel

我有一个Excel,其中B列中有电子邮件ID,而D列中有一些主题用于发送电子邮件。对于列D中的少数记录,在不同的行中提到了2个或更多的电子邮件ID,并且列D中的数据被合并用于列B中的所有记录。我想将单个邮件发送到每个主题的所有电子邮件ID从D栏开始。

我尝试使用以下代码,但是它向每个id发送不同的邮件,并仅针对第一行捕获主题,对于合并数据的其余行,它将主题显示为空白。

row_cnt = Worksheets("sheet1").Range("D65536").End(xlUp).Row

For k = 2 To row_cnt

 Set myApp = CreateObject("Outlook.Application")
 Set myItem = myApp.CreateItem(olMailItem)
       subj = Worksheets("Sheet1").Range("D" & k).Value
       to_pers = Worksheets("Sheet1").Range("B" & k).Value

        ' If subj = 0 Then
          'subj = Worksheets("sheet1").Range("F" & k - 1).Value
         'End If

    With myItem
        .Subject = subj
        .To = to_pers
        .HTMLBody = "Hello"
        .Display
        '.send
    End With
   End If

Next k

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以根据以下事实来制定策略:在合并单元格块中,只有顶部(左侧)单元格可以具有任何值,而其他所有单元格都为空。所以我会这样:

 For k = 2 To row_cnt
    if cells(k,4)<>vbnullstring then subj = cells(k,4)
    to_pers = cells(k,2)
    ' send mail here
    irow=irow+1
next