Excel 计算机锁定时发送Outlook电子邮件
我想在计算机锁定时发送一封Outlook电子邮件,其中包含Excel工作表的范围 我正在运行一个仪表板,它使用ODBC连接每周刷新一次。我写了一个宏,它在auto_open上运行。该文件由任务计划程序打开 系统: Windows7SP1, 展望2016年, Excel 2016 问题:无论用户是否登录,当我使用“运行”设置计划任务时,Excel文件将打开并刷新,但它不会发送邮件,也不会显示在“发件箱”中。不过刷新确实成功进行。这是当用户未登录时。我的意思是电脑被锁上了 当用户登录时,任务计划工作正常 我已经试过了,但它对我不起作用 我用于发送邮件的功能是:Excel 计算机锁定时发送Outlook电子邮件,excel,vba,outlook,scheduled-tasks,Excel,Vba,Outlook,Scheduled Tasks,我想在计算机锁定时发送一封Outlook电子邮件,其中包含Excel工作表的范围 我正在运行一个仪表板,它使用ODBC连接每周刷新一次。我写了一个宏,它在auto_open上运行。该文件由任务计划程序打开 系统: Windows7SP1, 展望2016年, Excel 2016 问题:无论用户是否登录,当我使用“运行”设置计划任务时,Excel文件将打开并刷新,但它不会发送邮件,也不会显示在“发件箱”中。不过刷新确实成功进行。这是当用户未登录时。我的意思是电脑被锁上了 当用户登录时,任务计划工作
Dim oApp As Object, OutApp As Object, OutMail As Object
Dim rng As Range
Dim strbody As String, strtail As String
strbody = "Hi team," & "<br>" & _
"<a href=""https://example.com"">Here</a> is the link to cloud upload" & Worksheets("Core View").Range("M2") & "<br><br>"
strtail = "Thanks," & "<br>" & _
"Team." & "<br><br>"
On Error Resume Next
'Only the visible cells in the selection
'Set rng = Selection.SpecialCells(xlCellTypeVisible)
Set rng = Sheets("Core View").Range("A7:K106").SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If rng Is Nothing Then
MsgBox "The selection is not a range or the sheet is protected. " & _
vbNewLine & "Please correct and try again.", vbOKOnly
End If
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
'Create the mail
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = "plaknas@example.com"
.CC = ""
.BCC = ""
If EmptySheets <> "" Then
.Subject = "update has issues in " & EmptySheets
Else
.Subject = "Update for week" & Worksheets("Core View").Range("M2")
End If
.HTMLBody = strbody & RangetoHTML(rng) & strtail
.Send 'or use .Display
End With
On Error GoTo 0
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Function
Dim oApp作为对象,OutApp作为对象,OutMail作为对象
变暗rng As范围
作为字符串的Dim strbody,作为字符串的strtail
strobdy=“嗨,团队,&”
”和_
“是指向云上传”和工作表(“核心视图”)的链接。范围(“M2”)和“
”
strtail=“谢谢,&”
“&”_
“团队。”&“
”
出错时继续下一步
'仅显示所选内容中的可见单元格
'Set rng=Selection.SpecialCells(xlCellTypeVisible)
设置rng=图纸(“核心视图”).范围(“A7:K106”).特殊单元(xlCellTypeVisible)
错误转到0
如果rng不算什么,那么
MsgBox“所选内容不是范围或工作表受保护。”&_
vbNewLine&“请更正并重试。”,vbOKOnly
如果结束
应用
.EnableEvents=False
.ScreenUpdate=False
以
'创建邮件
Set-OutApp=CreateObject(“Outlook.Application”)
Set-OutMail=OutApp.CreateItem(0)
出错时继续下一步
发邮件
.To=”plaknas@example.com"
.CC=“”
.BCC=“”
如果空表为“”,则
.Subject=“更新在”&空表中有问题
其他的
.Subject=“每周更新”和工作表(“核心视图”).Range(“M2”)
如果结束
.HTMLBody=strbody和rangetothtml(rng)和strtail
.Send'或use.Display
以
错误转到0
应用
.EnableEvents=True
.ScreenUpdate=True
以
发送邮件=无
设置应用程序=无
端函数
您不能在从任务计划程序运行或作为Windows服务运行的脚本或程序中使用Outlook对象模型。安全上下文完全不同,代码不会按预期运行:
如果没有用户登录,则没有Outlook帐户可用于发送邮件。我不希望任何东西都能抓住Outlook并开始发送电子邮件,你会这样做吗?这就是恶意软件通常的行为方式,这正是Outlook现在不允许它的原因。@KenWhite很抱歉,但我的意思是,当我写“这是用户未登录时”时,计算机被锁定了。但是,你说的有道理。让我惊讶的是,它在计算机未锁定时工作。我所说的适用于用户未登录的情况,我理解您的意思是用户未登录的情况。:-)非常感谢@ericlegault。我们已经找了整整一天了欢迎您!我也不得不去寻找这个,很多链接都被破坏了,甚至在搜索文章标题的时候也被破坏了