首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Excel -使用VBA代码在满足条件时发送电子邮件提醒

从Excel -使用VBA代码在满足条件时发送电子邮件提醒
EN

Stack Overflow用户
提问于 2019-07-02 13:01:13
回答 1查看 286关注 0票数 0

我有一个表从行1到200和从列A到T的数据,我需要VBA代码发送电子邮件提醒给多个收件人。表中有一些日期,我使用了if条件,并通过定义一个将返回"YES"的列来到达。无论何时出现YES,都应以相应的主题(Column C)发送相应的邮件(Column K)

我能够创建、定义和创建邮件并发送邮件。但无法使用for循环和IF条件匹配条件并使用.to = ""发送到收件人列表

代码语言:javascript
运行
复制
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

EN

回答 1

Stack Overflow用户

发布于 2019-07-04 01:50:18

我要调查的第一个问题是Sheet1。表单SheetN的工作表名称是工作表的内部名称。创建工作簿的第一个工作表时,Sheet1Worksheets("Sheet1")Sheet2Worksheets("Sheet2"),依此类推。但是,一旦您开始重命名或移动工作表,这种对应关系可能会丢失。我怀疑Sheet1不是包含电子邮件详细信息的工作表。

注意:“Sheet1”是英文版Excel中第一个工作表的默认名称。如果您的语言不是英语,则默认名称可能适合您的语言。

如果查看VBA编辑器的资源管理器面板,您将看到类似以下内容:

代码语言:javascript
运行
复制
 VBAProject (YourNameForWorkbook.xlsm)
  - Microsoft Excel Objects
      Sheet1 (YourNameForWorksheet1)
      Sheet2 (YourNameForWorksheet2)
  - Microsoft Excel Objects
      Module1
      YourNameForModule

减号在正方形的盒子里。如果有任何加号,则不会扩展该组。单击加号展开。Sheet1是您期望的工作表吗?如果没有,下面的说明会有所帮助。如果Sheet1是您期望的工作表,我们将需要寻找不同的原因。

如果一个工作簿只有一个工作表,那么将名称保留为默认的“Sheet1”也许是可以接受的。我认为最好是将工作表重命名为有意义的名称,例如“EmailDetails”。当您在六个月或十二个月后返回此工作簿时,有意义的名称会使您更容易理解工作簿。

接下来,我将再添加两条语句:

代码语言:javascript
运行
复制
Dim WshtEmail As Worksheet
Set WshtEmail = Worksheets("EmailDetails")

最后,我会用WshtEmail替换所有的Sheet1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56845614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档