计算机被锁定时如何发送电子邮件?
Posted
技术标签:
【中文标题】计算机被锁定时如何发送电子邮件?【英文标题】:How to Send Email When Computer is Locked? 【发布时间】:2012-04-29 23:23:03 【问题描述】:我想使用 Excel VBA 发送 Outlook 电子邮件。
代码Sendupdate
在手动运行时有效。
我的第二个宏 StartTimer
旨在在我不在办公桌前的设定时间执行上述操作。
当计算机被锁定时,电子邮件不会发送。当我回到办公桌前,电子邮件作为草稿挂在那里,我需要点击send
按钮。
Sub SendUpdate()
Recipient = "x@y.com"
Subj = "update"
Dim msg As String
msg = "hello”
HLink = "mailto:" & Recipient & "?"
HLink = HLink & "subject=" & Subj & "&"
HLink = HLink & "body=" & msg
ActiveWorkbook.FollowHyperlink (HLink)
Application.Wait (Now + TimeValue("0:00:01"))
Application.SendKeys "%s"
End Sub
Sub StartTimer()
Application.OnTime TimeValue("18:00:00"), "SendUpdate"
End Sub
有没有办法确保邮件被推送?
【问题讨论】:
对于这类操作,我从不使用 Excel。我使用 Windows 任务计划程序和 vbscript 文件从 excel 发送电子邮件。如果你有兴趣,我可以给你举个例子。绝对不是Application.SendKeys "%s"
,因为当你的系统被锁定时它不会工作。
嗨,悉达多,感谢您的反馈。如果你不介意,我想看看你如何做到这一点的例子。非常感谢!
好的,我需要至少 30 分钟来编写它,测试它,然后用截图上传到这里 :)
你能确认你的windows操作系统吗?
Windows XP。它是我的工作计算机(所以有通常的登录等)。
【参考方案1】:
SendKeys 可能是罪魁祸首。我仍然使用 CDO 通过 Excel VBA 发送电子邮件。这应该可以帮助您入门:http://www.rondebruin.nl/cdo.htm
【讨论】:
【参考方案2】:我将分 3 步打破这个“教程”
1) 编写 Excel 宏
2) 准备你的 vbscript 文件
3) 在 Windows 任务计划程序中设置任务
编写 EXCEL 宏
在 Excel 中打开一个新文件并在模块中粘贴此代码
Option Explicit
Const strTo As String = "abc@abc.com"
Const strCC As String = "def@abc.com" '<~~ change "def@abc.com" to "" if you do not want to CC
Const strBCC As String = "ghi@abc.com" '<~~ change "ghi@abc.com" to "" if you do not want to BCC
Sub Sample()
Dim OutApp As Object, OutMail As Object
Dim strbody As String, strSubject As String
strSubject = "Hello World"
strbody = "This is the message for the body"
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = strTo
.CC = strCC
.BCC = strBCC
.Subject = "This is the Subject line"
.Body = strbody
.Send
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
如果您使用 Excel 2007 及更高版本,则将 Excel 文件另存为 C:\Tester.Xlsm
;如果您使用 Excel 2003,则将其保存为 C:\Tester.Xls
并退出
准备 VBSCRIPT 文件
打开记事本,然后粘贴此代码。根据需要更改扩展名“.xls”。
Dim xlApp
Dim xlBook
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("C:\Tester.xls", 0, True)
xlApp.Run "Sample"
xlBook.Close
xlApp.Quit
Set xlBook = Nothing
Set xlApp = Nothing
将文件另存为Tester.vbs
并关闭它
在 WINDOWS 任务调度器中设置任务
您能确认一下您的 Windows 操作系统吗? – Siddharth Rout 36 分钟前
Windows XP。它是我的工作计算机(通常的登录名等)。 – 18 分钟前的凯恩斯十字路口
点击开始按钮 |所有程序 |配件 |系统工具 |安排任务以获取此窗口
双击“添加计划任务”得到这个窗口
点击下一步
点击“浏览”,选择我们之前创建的vbs文件,点击“打开”
您获得的下一个窗口至关重要,因为在这里我们需要在脚本需要运行时提及
完成需要后,点击下一步。
在此窗口中,输入您的登录详细信息,以便即使您的屏幕被锁定,脚本也可以运行。
完成后单击“下一步”,然后在下一个窗口中单击“完成”。您的任务计划程序现在看起来像这样
你已经完成了
锁上你的电脑,去喝杯咖啡休息一下;)当你回来时(取决于你在任务计划程序中设置的时间以及你的休息时间),电子邮件会已发送。
HTH
【讨论】:
这很棒,会试一试。再次感谢 - 非常感谢。 不是我有问题,而是你在几秒钟内选择了我的答案:) 你至少应该自己测试一下;) +1 还要确保任务计划程序服务正在运行。 (默认开启,但系统管理员通常通过组策略将其关闭) @Pradeep Kumar:是的。非常真实。 顺便说一句,如果添加 Windows 7 任务计划程序的屏幕截图会帮助社区吗?界面与XP有很大不同。 :p【参考方案3】:我使用 html 和 javascript setInterval 来运行 vba 代码来克服这个问题。 代码:
<html>
<script>
var flag = false;
var xlApp;
var xlBook;
var i = 0;
function processExcel()
//Open the excel containing macro for the first time
if(flag==false)
xlApp = new ActiveXObject ( "Excel.Application" );
//Your Excel containing VBA code
xlBook=xlApp.Workbooks.Open("Count1.2.xlsm")
// "a" is the VBA macro
xlApp.Run("a");
flag=true;
i++;
window.status="Last Updated " + new Date();
var w
function run()
processExcel();
w= setInterval("processExcel()",120000);
function stop()
clearInterval(w);
</script>
<body >
<input type="button" value="Start" onclick="run()" />
<input type="button" value="Stop" onclick="stop()"/>
</body>
</html>
【讨论】:
以上是关于计算机被锁定时如何发送电子邮件?的主要内容,如果未能解决你的问题,请参考以下文章