我有一个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
答案 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