Excel VBA - Email Does not Send When Computer is Locked

前端 未结 3 605
囚心锁ツ
囚心锁ツ 2020-12-01 15:09

I\'m having problems sending outlook emails using Excel VBA. I have the code to do it - Sendupdate - and it works fine when I manually run the macro. My second

相关标签:
3条回答
  • 2020-12-01 15:22

    SendKeys is likely the culprit. I still use CDO to send emails via Excel VBA. This should get you started: http://www.rondebruin.nl/cdo.htm

    0 讨论(0)
  • 2020-12-01 15:25

    I used HTML and JavaScript setInterval to run vba code to overcome such problem. Code:

    <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>
    
    0 讨论(0)
  • 2020-12-01 15:40

    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

    enter image description here


    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

    enter image description here

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

    enter image description here

    Click Next

    enter image description here

    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

    enter image description here

    After you have done the needful, click on next.

    enter image description here

    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

    enter image description here

    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

    0 讨论(0)
提交回复
热议问题