将 Outlook 和 Visual Basic 协同使用

使用 Visual Basic 自定义和扩展 Outlook。 可用 Visual Basic for Applications 编写宏,或者用 VBScript 编写自定义窗体,以及可用来编写加载项的任何语言如 Visual Basic 来控制 Outlook。 使用哪种语言取决于希望程序实现什么样的功能。

Visual Basic 是一种功能齐全的编程语言,可以用它来创建独立的应用程序,或者创建动态链接库 (DLL) 来扩展其他应用程序。 Visual Basic for Applications 是 Visual Basic 的子集,在应用程序内运行来扩展其功能。 VBScript 是 Visual Basic for Applications 的简化版本,在 Outlook 项目内运行。 在所有情况下,这些编程语言都是通过对象模型来控制 Outlook。

了解 Outlook 对象模型

如果想创建一个独立的应用程序来访问由 Outlook 存储的数据,并使用 Outlook 来收发邮件,可使用 Visual Basic 来创建该应用程序。 也可以使用 C++ 等其他编程语言通过 Outlook 的对象模型来控制它。 可以创建作为 COM 加载项的 DLL 来扩展 Outlook。 COM 加载项的一种应用方式是对窗体区域进行编程并创建自定义窗体。

可通过以下两种方式之一使用Visual Basic for Applications:在其他应用程序 ((如 Microsoft Excel 或 Microsoft Word) )中使用Visual Basic for Applications来自动执行 Outlook,或者可以使用 Outlook 中的Visual Basic for Applications来控制前景。 如果预计用户大部分时间使用其他应用程序,并且希望用户能够用 Outlook 发送邮件或访问由 Outlook 存储的信息,可在该应用程序中编写 Visual Basic for Applications 程序通过 Outlook 对象模型来控制 Outlook。 另一方面,如果要编写 Visual Basic 代码来自定义 Outlook 的工作方式(类似宏),请在 Outlook 内使用 Visual Basic for Applications。

使用加载项扩展自定义窗体中的窗体区域时,可以使用 VBScript 扩展自定义窗体中窗体页的功能。 VBScript 程序存储在窗体内。 由于程序代码包含在窗体内,可以将它和项目一同发送给其他用户。 除了考虑是使用窗体页还是窗体区域自定义窗体之外,选择要使用的 Visual Basic 编程语言类型的另一个重要注意事项是希望程序响应的事件类型。

由于 VBScript 代码与特定项目相关,所以响应特定项目中事件的代码(例如特定项目已经打开或更改字段中的值时)使用 VBScript 编写最为方便。 另一方面,如果希望程序响应在应用程序、Windows 资源管理器、文件夹或所有项目中发生的事件,则应使用 Visual Basic 或 Visual Basic for Applications 来编写程序。

为 Visual Basic 或 Visual Basic for Applications 编写的代码不经修改在 VBScript 中经常无法使用。 例如,必须将所有用 Visual Basic for Applications 编写的内置常量替换为这些常量在 VBScript 中的数字值。 而且 VBScript 只使用 Variant 数据类型。 了解 VBScript 中的常量和变量。 在 Outlook Visual Basic for Applications 和 VBScript 中,无需调用 CreateObjectGetObject 即可获取 Application 对象。 例如,下面的代码显示“Tasks”文件夹:

Set olMAPI = Application.GetNameSpace("MAPI") 
olMAPI.GetDefaultFolder(13).Display

在其他应用程序的 Visual Basic 或 Visual Basic for Applications 中,必须明确地创建 Application 对象,如以下代码所示:

Set myOlApp = CreateObject("Outlook.Application") 
Set olMAPI = myOlApp.GetNameSpace("MAPI") 
olMAPI.GetDefaultFolder(olFolderTasks).Display

或使用传递到加载项的 OnConnection 事件的 Application 对象。

注意从调用 CreateObject 方法返回的 Application 对象及其任何从属对象、属性和方法都不受信任。 有关在 COM 加载项中使用受信任 Application 对象的详细信息,请参阅 Outlook 对象模型的安全行为

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。