【问题标题】:From Excel - Send Email Reminder When Criteria is met using VBA Code从 Excel - 使用 VBA 代码满足条件时发送电子邮件提醒
【发布时间】:2020-06-03 13:42:21
【问题描述】:

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

我能够创建定义和创建邮件并发送邮件。但无法使用 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

【问题讨论】:

    标签: vba outlook


    【解决方案1】:

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

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

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

     VBAProject (YourNameForWorkbook.xlsm)
      - Microsoft Excel Objects
          Sheet1 (YourNameForWorksheet1)
          Sheet2 (YourNameForWorksheet2)
      - Microsoft Excel Objects
          Module1
          YourNameForModule
    

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

    如果工作簿有一个工作表,则将名称保留为默认的“Sheet1”也许是可以接受的。我认为最好将工作表重命名为有意义的名称,例如“EmailDetails”。当您在 6 个月或 12 个月后回到这本工作簿时,有意义的名字会让您更容易理解这本工作簿。

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

    Dim WshtEmail As Worksheet
    Set WshtEmail = Worksheets("EmailDetails")
    

    最后,我会将每个Sheet1 替换为WshtEmail

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-09
      • 1970-01-01
      相关资源
      最近更新 更多