根据两个工作簿中的Excel值发送电子邮件提醒

根据两个工作簿中的Excel值发送电子邮件提醒,excel,vba,outlook,Excel,Vba,Outlook,我试图在员工在任何特定培训到期日后45天内自动向他们发送电子邮件,而不必打开文件来运行宏(如果可能)。此外,在每次培训都没有电子邮件预览的情况下完成此操作,因为每次运行宏时可能会弹出数百个 我想从我的一列中的值中提取确定电子邮件正文的培训名称 我想从一个单独的Excel文件中提取到期日期,该文件是培训日期的记录 我设法在到期日后45天内将培训的电子邮件预览排成队列,但该代码允许Excel发送已过期培训的提醒 我希望Excel在达到到期日期后停止。我尝试:如果mydate2-datetoday2将

我试图在员工在任何特定培训到期日后45天内自动向他们发送电子邮件,而不必打开文件来运行宏(如果可能)。此外,在每次培训都没有电子邮件预览的情况下完成此操作,因为每次运行宏时可能会弹出数百个

我想从我的一列中的值中提取确定电子邮件正文的培训名称

我想从一个单独的Excel文件中提取到期日期,该文件是培训日期的记录

我设法在到期日后45天内将培训的电子邮件预览排成队列,但该代码允许Excel发送已过期培训的提醒


我希望Excel在达到到期日期后停止。我尝试:
如果mydate2-datetoday2将注释作为答案发布,以便将其列为答案

需要

.Body = "..." & cells(x,3).value
,或类似于您的上下文


关于提示/要点的问题,不要害怕划分代码,这样更容易处理这些部分

您的代码有2或3个部分,您可以执行以下操作来调用不同的部分:

Public Sub execute()
    If ActiveSheet.name <> "SQDC" Then Exit Sub
    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
        .Calculation = xlManual
    End With
    '''
    task_one
    task_two
    task_three
    '''
    With Application
        .ScreenUpdating = True
        .DisplayAlerts = True
        .Calculation = xlAutomatic
    End With
End Sub
公共子执行()
如果ActiveSheet.name为“SQDC”,则退出Sub
应用
.ScreenUpdate=False
.DisplayAlerts=False
.Calculation=xlManual
以
'''
任务1
任务二
任务三
'''
应用
.ScreenUpdate=True
.DisplayAlerts=True
.计算=xl自动
以
端接头
关于来回使用Outlook和Excel,请将关键项保存为变量,以便Outlook可以执行它需要执行的操作,而无需搜索单元格引用

'at the top of the module, outside of the subroutine:
public email_address as string, employ_name as string

'where If mydate2 - datetoday2 <= 45 Then is TRUE
email_address = cells(x,6).value
employ_name = cells(x,3).value
”位于模块顶部,子例程外部:
公共电子邮件地址作为字符串,使用名称作为字符串

如果mydate2-datetoday2
.Body=“…”value=x3
需要是
.Body=“…”&单元格(x,3).value
,或者类似于您的上下文。Cyril谢谢您,效果很好,我只需将其添加到代码行的末尾,这是一个相当无缝的添加。非常感谢。不要贪心,但是对于我正在尝试的大规模编码,你有什么建议吗?也许仅仅是几个好的链接或关键字,我就可以自己去研究?再说一次,在编码方面,我是相当无知的。。。说真的,谢谢你的上述评论。
Public Sub execute()
    If ActiveSheet.name <> "SQDC" Then Exit Sub
    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
        .Calculation = xlManual
    End With
    '''
    task_one
    task_two
    task_three
    '''
    With Application
        .ScreenUpdating = True
        .DisplayAlerts = True
        .Calculation = xlAutomatic
    End With
End Sub
'at the top of the module, outside of the subroutine:
public email_address as string, employ_name as string

'where If mydate2 - datetoday2 <= 45 Then is TRUE
email_address = cells(x,6).value
employ_name = cells(x,3).value