How to Send Email When Computer is Locked?

email, excel, outlook, scheduled-tasks, vba

Solution

I will break this "Tutorial" in 3 steps

1) Writing your Excel Macro

2) Preparing your vbscript file

3) Setting the task in Windows Task Scheduler

WRITING THE EXCEL MACRO

Open a new File in Excel and in the module, paste this code

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

Save the Excel File as `C:\Tester.Xlsm` if you are using Excel 2007 onwards or `C:\Tester.Xls` if you are using Excel 2003 and exit

PREPARING THE VBSCRIPT FILE

Open Notepad and then paste this code. Change the extension ".xls" as applicable.

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

Save the File as `Tester.vbs` and close it

SETTING UP THE TASK IN WINDOWS TASK SCHEDULER

Could you confirm your windows operating system? – Siddharth Rout 36 mins ago

Windows XP. Its my work computer (so has the usual logins etc). – keynesiancross 18 mins ago

Click on the Start Button | All Programs | Accessories | System Tools | Schedule Tasks to get this window

Double click on "Add Scheduled Task" to get this window

Click Next

Click on "Browse" and select the vbs file that we created earlier and click on "open"

The next window that you get is crucial as it is here we need to mention when script needs to run

After you have done the needful, click on next.

In this window, enter your login details so that the script can run even when your screen is locked.

Click "Next" when done and then click "Finish" in the next window. Your task scheduler now looks like this

And you are done

Lock your pc and go take a coffee break ;) When you come back (depending on what time you set in the task scheduler and how much time is your break), the email would have been sent.

HTH

Problem

I want to send Outlook emails using Excel VBA. The code `Sendupdate` works when run manually. My second macro `StartTimer` is intended to execute the above at a set time when I am not at my desk. When the computer is locked the email does not send. When I come back to my desk the email is hanging there as a draft, and I need to click the `send` button. ``` 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 ``` Is there a way to make sure the email gets pushed?

Original source