我有一个表从行1到200和从列A到T的数据,我需要VBA代码发送电子邮件提醒给多个收件人。表中有一些日期,我使用了if条件,并通过定义一个将返回"YES"
的列来到达。无论何时出现YES
,都应以相应的主题(Column C
)发送相应的邮件(Column K
)
我能够创建、定义和创建邮件并发送邮件。但无法使用for循环和IF条件匹配条件并使用.to = ""
发送到收件人列表
Sub Sendmail()
Dim ol As Outlook.Application
Dim olmail As Outlook.MailItem
Set ol = New Outlook.Application
For i = 1 To Sheet1.Cells(Rows.Count, 16).End(xlUp).Row
Set olmail = ol.CreateItem(olMailItem)
With olmail
.To = Sheet1.Cells(i, 16).Value
.Subject = Sheet1.Cells(i, 3).Value & Sheet1.Cells(i, 4).Value
.Body = Range("C2").Value
.Display
'.send
End With
Next
Set ol = Nothing
Set olmail = Nothing
End Sub
Outlook应用程序正在打开,但没有邮件ID
发布于 2019-07-04 01:50:18
我要调查的第一个问题是Sheet1
。表单SheetN
的工作表名称是工作表的内部名称。创建工作簿的第一个工作表时,Sheet1
为Worksheets("Sheet1")
,Sheet2
为Worksheets("Sheet2")
,依此类推。但是,一旦您开始重命名或移动工作表,这种对应关系可能会丢失。我怀疑Sheet1
不是包含电子邮件详细信息的工作表。
注意:“Sheet1”是英文版Excel中第一个工作表的默认名称。如果您的语言不是英语,则默认名称可能适合您的语言。
如果查看VBA编辑器的资源管理器面板,您将看到类似以下内容:
VBAProject (YourNameForWorkbook.xlsm)
- Microsoft Excel Objects
Sheet1 (YourNameForWorksheet1)
Sheet2 (YourNameForWorksheet2)
- Microsoft Excel Objects
Module1
YourNameForModule
减号在正方形的盒子里。如果有任何加号,则不会扩展该组。单击加号展开。Sheet1
是您期望的工作表吗?如果没有,下面的说明会有所帮助。如果Sheet1
是您期望的工作表,我们将需要寻找不同的原因。
如果一个工作簿只有一个工作表,那么将名称保留为默认的“Sheet1”也许是可以接受的。我认为最好是将工作表重命名为有意义的名称,例如“EmailDetails”。当您在六个月或十二个月后返回此工作簿时,有意义的名称会使您更容易理解工作簿。
接下来,我将再添加两条语句:
Dim WshtEmail As Worksheet
Set WshtEmail = Worksheets("EmailDetails")
最后,我会用WshtEmail
替换所有的Sheet1
。
https://stackoverflow.com/questions/56845614
复制相似问题