我想请您帮个忙。我得到了一个电子表格,其中包含代码,如果单元格(I3)包含文本“是”,该代码将发送电子邮件。
基本上,如果单元格(J3)为空,则(I3)返回值“是”,然后代码将完成后的电子邮件发送到单元格(B3)中的地址,日期显示在单元格(J3)上(I3)中的值变为“ NO”。因此,在下一次情况下,代码知道不需要将电子邮件发送给特定的人。
我得到了这段互联网代码。对代码做了一些修改以适合工作表1。我对此很陌生,请耐心等待。
在单元格(C3)中,我有开始日期,在单元格(H3)中,我有结束日期。我希望我的电子表格在不打开工作簿的情况下自动发送电子邮件。 我希望有一个时间触发器,如果特定任务在30天内到期,并且可以在每个星期一生成一封电子邮件,直到达到0天,然后再发送一封过期的电子邮件-5,则可以发送电子邮件。
不确定单元格(I3)或(J3)是否仍在使用中。
我希望我能清楚地解释一切。
Dim uRange
Dim lRange
Dim BCell As Range
Dim iBody As String
Dim iTo As String
Dim iSubject As String
Dim DaysOverdue
Public Sub SetEmailParams()
Set uRange = Sheet1.Range("I2")
Set lRange = Sheet1.Range("I" & Rows.Count).End(xlUp)
iBody = Empty
iSubject = Empty
iTo = Empty
For Each BCell In Range(uRange, lRange)
If BCell.Value = "YES" Then
If DateDiff("d", Format(Now(), "dd/mm/yyyy"), Format(Range("G3"),
"dd/mm/yyyy")) <= 0 Then
DaysOverdue = DateDiff("d", Format(BCell.Offset(0, -6)),
Format(BCell.Offset(0, -1)))
iTo = BCell.Offset(0, -7).Value
iSubject = "Reminder"
iBody = "The job assigned to you under this describtion - " &
BCell.Offset(0, -4) & " in the name of " & BCell.Offset(0, -3) & " for the
confirmation date of " & BCell.Offset(0, -1) & " is due " & DaysOverdue & "
days."
SendEmail
BCell.Offset(0, 1).Value = Now()
End If
End If
Next BCell
End Sub
Private Sub SendEmail()
Dim OutApp As Object
Dim OutMail As Object
Dim strbody As String
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = iTo
.CC = ""
.BCC = ""
.Subject = iSubject
.Body = iBody
'You can add a file like this
'.Attachments.Add ("C:\test.txt")
.Send 'or use .Send to automatically send without displaying
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
答案 0 :(得分:0)
您可以创建一个BAT文件,该文件将打开此工作簿,当工作簿打开时,然后运行一个Auto_Open宏以读取所有单元格内容。
在ThisWorkbook中编写以下代码:
Private Sub Workbook_Open()
MsgBox "Welcome"
End Sub
这是我之前提到的BAT文件的示例:
1.-打开记事本
2.-写下:
start Excel.exe "C:\Temporal\TEST.xlsm"
3.-将其另存为MyBat.bat
4.-转到面板控制->管理工具->任务计划程序->创建基本任务
5.-设置执行该bat文件的时间!
我希望这对您有用! 干杯!
答案 1 :(得分:0)
参考我的评论,下面给出了一个使用CommandTimeout = 1;
var count = (int)ExecuteQueryDynamic($"SELECT count(*) FROM {database}.dbo.{name}").Single();
的示例。
此示例在下一个星期一的早上8点向每个发送带有特定主题的电子邮件。
Mail.DeferredDeliveryTime