vbscript将应用于一个PST文件的所有规则复制到另一个PST文件

vbscript将应用于一个PST文件的所有规则复制到另一个PST文件,vbscript,outlook,Vbscript,Outlook,我有两个pst文件。我想将应用于第一个pst文件的所有规则应用于第二个pst文件。是否可以使用vbscript和不使用VBA来执行此操作。我认为VBA只能在Outlook本身上运行,不能作为独立脚本运行 我有两个pst文件。我想将应用于第一个pst文件的所有规则应用于第二个pst文件。是否可以使用vbscript和不使用VBA来执行此操作 是的,可以使用VBScript执行此操作,因为VBScript可以使用与VBA相同的基于COM的Outlook Office Automation API,但

我有两个pst文件。我想将应用于第一个pst文件的所有规则应用于第二个pst文件。是否可以使用vbscript和不使用VBA来执行此操作。我认为VBA只能在Outlook本身上运行,不能作为独立脚本运行

我有两个pst文件。我想将应用于第一个pst文件的所有规则应用于第二个pst文件。是否可以使用vbscript和不使用VBA来执行此操作

是的,可以使用VBScript执行此操作,因为VBScript可以使用与VBA相同的基于COM的Outlook Office Automation API,但对象是后期绑定的(因此,如果脚本中存在任何键入错误,则在运行它之前,您不会知道这些错误)

要将VBA转换为VBScript,需要执行以下操作:

  • 将VBA代码复制并粘贴到
    *.vbs
    文件中
  • 从变量声明中删除类型信息
  • 可选,但强烈建议:在第1行添加
    Option Explicit
  • 将Office COM automation互操作代码更改为使用后期绑定的
    CreateObject
    GetObject
    函数,而不是VBA/VB6特定的构造函数或COM API调用

    ' Change this VBA/VB6:
    Set reminder = New Outlook.Reminder
    ' To this VBS:
    Set reminder = CreateObject("Outlook.Reminder")
    
  • 所以这个VBA:

    Sub Foo()
    
        Dim foo As String
        foo = ""
    
        Dim reminder As Outlook.Reminder
        Set reminder = Outlook.Application.Reminders.Item(1)
    
    End Sub
    
    …成为此VBScript:

    Option Explicit
    
    Sub Foo()
    
        Dim foo
        foo = ""
    
        Dim reminder
        Set reminder = GetObject( "Outlook.Application" ).Reminders.Item(1)
    
    End Sub
    
    Call Foo ' Enter into the Foo() subroutine from the top-level script.
    
    我认为VBA只能在Outlook本身上运行,不能作为独立脚本运行


    但是,当使用VBScript(从
    cscript
    wscript
    或任何其他活动脚本主机(如IIS)运行)时,您仍然使用与VBA相同的Office automation API,因此您仍然需要在计算机上安装Outlook,并在正常桌面会话中运行脚本(而不是会话0或作为无头进程)。您还需要确保脚本的主机与Outlook(即x86与x64)具有相同的ISA(“比特度”)。

    “不是会话0”的意思是?我是否应该使用cscript exe在任务计划程序中计划脚本。@itsraja会话0是一个单独的“无头”进程运行服务的Windows中的用户会话。Office COM automation在无头场景中不受支持,例如在会话0中运行(虽然它可能仍然可以工作,但Microsoft不支持它,并且您可能会遇到一些问题)。可将计划任务配置为在会话0或交互式桌面会话中运行-请参阅此处:
    Option Explicit
    
    Sub Foo()
    
        Dim foo
        foo = ""
    
        Dim reminder
        Set reminder = GetObject( "Outlook.Application" ).Reminders.Item(1)
    
    End Sub
    
    Call Foo ' Enter into the Foo() subroutine from the top-level script.