使用VBScript调用Outlook过程

L42

我在Outlook中有一个过程,该过程将所有保存的邮件发送到Drafts文件夹中。
下面是代码:

Public Sub SendMail()

Dim olApp As Outlook.Application
Dim olNS As Outlook.NameSpace
Dim olFolder As Outlook.MAPIFolder
Dim olDraft As Outlook.MAPIFolder
Dim strfoldername As String
Dim i As Integer

Set olApp = Outlook.Application
Set olNS = olApp.GetNamespace("MAPI")
Set olFolder = olNS.GetDefaultFolder(olFolderInbox)

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

End Sub

上面的代码工作正常。

问题:

我想使用Task Scheduler此程序在指定的时间触发。
1.我将把程序放在Outlook,Module或ThisOutlookSession中的什么位置?
2.我不太擅长,vbscript所以我也不知道如何编写代码以调用Outlook程序。我已经完成了调用Excel Procedure的操作,但是Outlook不支持该.Run属性。

因此,这不起作用:

Dim olApp

Set olApp = CreateObject("Outlook.Application")
olApp.Run "ProcedureName"

Set olApp = Nothing

我也读过Session.Logon这样的内容:

Dim olApp

Set olApp = CreateObject("Outlook.Application")
olApp.Session.Logon
olApp.ProcedureName

Set olApp = Nothing

但是它抛出错误,指出ProcedureName不支持对象
希望有人能有所启发。

解决方案:

好的,我发现有2个变通方法可以避免此弹出窗口或使该弹出窗口通过。

弹出窗口

第一个:正如KazJaw指出的那样。

假设您有另一个程序(例如Excel,VBScript),Outlook该程序包括在过程中通过发送邮件
而不是使用.Send,而只是.Save使用邮件。
它将保存在Outlook's Draft文件夹中。
然后使用下面的代码,使用发送发送草稿Outlook Task Reminder

Option Explicit
Private WithEvents my_reminder As Outlook.Reminders

Private Sub Application_Reminder(ByVal Item As Object)

Dim myitem As TaskItem

If Item.Class = olTask Then 'This works the same as the next line but i prefer it since it automatically provides you the different item classes.
'If TypeName(Item) = "TaskItem" Then
    Set my_reminder = Outlook.Reminders
    Set myitem = Item
    If myitem.Subject = "Send Draft" Then
        Call SendMail
    End If
End If

End Sub

Private Sub my_reminder_BeforeReminderShow(Cancel As Boolean)

Cancel = True
Set my_reminder = Nothing

End Sub

Task Reminder带有主题“发送草稿”的节目时,上面的代码将触发
但是,我们不希望它显示出来,因为整个过程只是为了调用SendMail过程。
因此我们添加了一个程序,Cancels程序显示提醒是olTask类还是TaskItem类型。

Outlook当然需要运行。
您可以像我一样将其保持24小时运行,也可以创建一个VBscript通过预定的打开它Task Scheduler

第二个:Allow出现安全弹出窗口时,使用API​​以编程方式单击按钮。
感谢SiddarthRout的帮助。
这是LINK,可帮助您以编程方式单击该Allow按钮。
当然,您必须对其进行一些调整。

卡齐米兹·贾沃(Kazimierz Jawor)

尝试和测试!

假设您一直在运行Outlook Application(根据问题下方的评论),您可以按照以下步骤进行操作:

  1. 在Outlook中添加新任务,设置为“运行宏YourMacroName”,并设置宏启动的时间(加上周期)。

  2. 转到VBA编辑器,打开ThisOutlookSession module并在其中添加以下代码(另请参见代码中的注释):

    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
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用VBScript调用Outlook过程

来自分类Dev

使用参数调用VBScript

来自分类Dev

在Outlook中通过VBScript规则调用Slack API

来自分类Dev

使用Knime调用存储过程

来自分类Dev

使用VBA调用存储过程

来自分类Dev

在VbScript中使用加密名称调用函数

来自分类Dev

使用 OUTLOOK VBScript 向 C# 发送邮件

来自分类Dev

将jQuery添加到HTA后,调用VBScript过程停止工作

来自分类Dev

VBScript 创建 Outlook 规则

来自分类Dev

使用dblink和Java调用存储过程

来自分类Dev

如何使用JDBC调用PostgreSQL存储过程

来自分类Dev

在存储过程调用中使用默认参数

来自分类Dev

使用`With`语句的对象作为过程调用的参数

来自分类Dev

使用Dapper调用SQL存储过程

来自分类Dev

如何使用sqlalchemy调用存储过程

来自分类Dev

使用mysql递归调用的存储过程

来自分类Dev

如何使用TYPE RECORD调用过程?

来自分类Dev

使用Snowflake中的任务调用存储过程

来自分类Dev

使用mutext检测并调用已启动的过程

来自分类Dev

如何使用JDBC调用PostgreSQL存储过程

来自分类Dev

如何使用sqlalchemy调用存储过程

来自分类Dev

使用参数从.Net调用DocumentDb存储过程。

来自分类Dev

使用参数在Java中调用过程

来自分类Dev

phpmyadmin使用输入值存储过程调用

来自分类Dev

使用 Spring Data JPA 调用存储过程

来自分类Dev

C# - 使用类型调用存储过程

来自分类Dev

使用 callproc 从 django 调用 PL/SQL 过程

来自分类Dev

使用MFC中的异步过程调用中断Winsock接受调用

来自分类Dev

使用来自VBscript的参数调用Python脚本