Call Outlook procedure using VBScript

后端 未结 3 646

I have a procedure in Outlook that sends all the saved messages in Drafts folder.
Below is the code:

Public Sub SendMail()

Dim olApp As         


        
相关标签:
3条回答
  • 2020-12-15 13:45

    If you are using Outlook 2007 or newer I have found you can easily eliminate the security pop up you mentioned above when running your script by doing the following:

    1. In Outlook 2007 Trust Center, go to Macro Security - Select "No security Check for macros"

    2. In Outlook 2007 Trust Center, go to Programatic Access - Select "Never warn me abous suspicious activity.

    Of course that technically leaves you open to the remote possibility for someone to email you some malicious email script or something of that nature I assume. I trust my company has that managed though and this works for me. I can use VBS scripts in Outlook, Access, Excel to send emails with no security pop up.

    Another Option:

    If you don't want to do that, another option that has worked well for me prior to this is here: http://www.dimastr.com/redemption/objects.htm

    Basically a dll redirect that does not include the popup. It leaves your other default security in place and you write \ call your VBA for it and send mail without the secutity pop-ups.

    0 讨论(0)
  • 2020-12-15 13:49

    Tried & Tested!

    Assuming that you have Outlook Application always running (according to comment below your question) you can do what you need in the following steps:

    1. add a new task in Outlook, set subject to: "run macro YourMacroName" and set time (plus cycles) when your macro should start.

    2. go to VBA Editor, open ThisOutlookSession module and add the following code inside (plus see the comments inside the code):

      Private Sub Application_Reminder(ByVal Item As Object)
      
      If TypeName(Item) = "TaskItem" Then
          Dim myItem As TaskItem
          Set myItem = Item
          If myItem.Subject = "run macro YourMacroName" Then
      
              Call YourMacroName    '...your macro name here
      
          End If
      End If
      End Sub
      
    0 讨论(0)
  • 2020-12-15 13:57

    Where will I put the procedure in Outlook, Module or ThisOutlookSession?

    Neither. Paste the below code in a Text File and save it as a .VBS file. Then call this VBS file from the Task Scheduler as shown HERE

    Dim olApp, olNS, olFolder, olDraft, strfoldername, i
    
    Set olApp = GetObject(, "Outlook.Application")
    Set olNS = olApp.GetNamespace("MAPI")
    Set olFolder = olNS.GetDefaultFolder(6)
    
    strfoldername = olFolder.Parent
    
    Set olDraft = olNS.Folders(strfoldername).Folders("Drafts")
    
    If olDraft.Items.Count <> 0 Then
        For i = olDraft.Items.Count To 1 Step -1
            olDraft.Items.Item(i).Send
        Next
    End If
    
    0 讨论(0)
提交回复
热议问题