Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 计算机锁定时发送Outlook电子邮件_Excel_Vba_Outlook_Scheduled Tasks - Fatal编程技术网

Excel 计算机锁定时发送Outlook电子邮件

Excel 计算机锁定时发送Outlook电子邮件,excel,vba,outlook,scheduled-tasks,Excel,Vba,Outlook,Scheduled Tasks,我想在计算机锁定时发送一封Outlook电子邮件,其中包含Excel工作表的范围 我正在运行一个仪表板,它使用ODBC连接每周刷新一次。我写了一个宏,它在auto_open上运行。该文件由任务计划程序打开 系统: Windows7SP1, 展望2016年, Excel 2016 问题:无论用户是否登录,当我使用“运行”设置计划任务时,Excel文件将打开并刷新,但它不会发送邮件,也不会显示在“发件箱”中。不过刷新确实成功进行。这是当用户未登录时。我的意思是电脑被锁上了 当用户登录时,任务计划工作

我想在计算机锁定时发送一封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。我们已经找了整整一天了欢迎您!我也不得不去寻找这个,很多链接都被破坏了,甚至在搜索文章标题的时候也被破坏了