Office 应用程序之间相互通信――以及自动化它们之间的交互――的一般方法是使用内建的 VBA 语言。但是开发人员应该开始注意微软编程的未来走向Visual Studio .NET,它的丰富的工具集,它的面向对象的特性,以及它的无数的框架(所谓框架是指包含一些有用对象的代码库的集合,比如加密)。 很多开发人员发现经常需要设计 Office 应用程序之间或 Office 应用程序与外部世界的通信方式。这里我将向你展示如何编写能实例化 Access 并使其显示报表的VB.NET 应用程序。使用这里展示的例子,你可以从 Office 套件的外部以及 VBA 的外部自动化 Office 应用程序。
创建第一个针对 Office 2003 的 VB.NET 项目 下面的例子假设你安装了Visual Studio 2003 和Office 2003(虽然可以使用以前的版本,但是我们没有在老版本中测试)。另外你还需要示例 Northwind 数据库,因为该应用程序中用到了这个数据库。 启动 VB.NET,然后打开一个新的 Windows 样式的应用程序。从菜单中选择 File New Project(文件 新建 项目)。点击左边窗格中的 Visual Basic Projects(Visual Basic 项目),然后在模板窗格中双击 Windows Application(Windows 应用程序)。这个时候会出现 Form1,然后双击窗体进入 Form1 的代码窗口。 现在你看到的是VB.NET 程序员用来编写初始化代码的Form_Load事件。在代码不是很多的情况下,就像我展示的这个例子,程序员通常会把所有的代码都放在这里。 将列表A中的代码敲到 Form1_Load 事件中(你也可以使用拷贝/粘贴,但那还有什么乐趣呢?)。在你敲入这段代码时,你可能会看到在以下这些代码下有锯齿线(锯齿线表示有错误): access.Application access.ApplicationClass 如果你将鼠标指针悬停在这些对象之上,你会看到一个小消息说这个类型没有定义(this type is not defined)。如果你是有经验的 VB 程序员,你可能会感到很吃惊,因为在这个上下文中使用了类型(type)这个词。不要被吓住了:这只是 VB.NET 不是由 VB 程序员编写带来的一个副作用。而且看上去很多有 VB 经验的人都参与了 VB.NET 文档的编制。所以要熟悉很多 C 语言变形,前面提到的就是一个。Type 在这里是 Object的意思。
下载 Office 2003 程序集测试这个代码 如果按下 F5 键尝试测试这段代码,你会得到同样的类型未定义的错误消息。这是因为你没有包含一个必要的“引用”(与使用 Imports 语句类型)引入 Access 对象库。 你必须在 VB.NET 代码窗口中选择 Project Add Reference(项目 添加引用),然后点击对话框中的 COM 选项卡。现在向下拉动滚动条,然后双击Microsoft Access 11.0 Object Library(11.0 表示 Office 2003)。点击 OK(确定)关闭对话框,这样就把这个与 Access 相关的代码库添加到了VB.NET 项目中了。 如果在 COM 库列表中没有发现Microsoft Access 11.0 Object Library 该怎么办呢?这是处于分布式框架可爱世界的程序员遇到的另外一个困难。幸运的是,如果没有这个特定的对象库,你可以很容易地修正它。只要到 MSDN 下载它即可。 为了使你的生活更加术语化,你正在下载的项叫做Office XP 主interop程序集(primary interop assembly)。程序集(assembly)是代码库(code library)的另外一个叫法,你可以叫它们 DLL 或者任何你想叫的名字。我发现代码库总共至少有25种叫法:程序集(assembly)、控件库(control library)、类库(class library)、控件类型库(control type library)、核心类型库(core type library)、开发环境(development environment)、动态链接库(dynamic link library)、可扩展库(extensibility)、宿主对象模型(host object model)、内核(kernel)、辅助库(helper)、对象库(object library)、对象模型(object model)、命名空间(namespace)、项目模型(project model)、代理库(proxylib)、插件(plug-in)、插件类型库(plugin type library)、运行时执行库(runtime execution library)、运行时执行引擎(runtime execution engine)、运行时库(runtime library)、服务(services)、服务库(services library)、类型库(type library)。不可否认,这些术语的内涵有些细微的差别。例如,控件的代码库中通常都会有一个用户界面。不过无论如何,多数这种术语只是说法不同而已。 在下载完Office XP PIA (主interop程序集)之后,你是不是认为然后就可以直接使用它了?对不起,你还需要对它进行更多的处理。它有一个 readme.htm 文件描述了安装和运行它的步骤。而且,在安装完 PIA 之后一定要重启 Windows。此外,有时候不使用这个代码库也可以在 VB.NET 和 Office 2003 之间进行通信。然而,对于这篇文章中的例子,PIA 是必须的。
运行 VB.NET 应用程序 现在你应该可以运行前面的代码了,按下 F5 查看代码执行过程。Access 将会启动,然后显示 Northwind 示例数据库中的 Sales by Category 报表。如果出现了一个错误消息,说明 Access 不能打开这个数据库,那么就表示在你的硬盘上的下面这个路径中没有发现Northwind.mdb 数据库。 "C:\Program Files\Microsoft Office\Office11\Samples\Northwind.mdb" 要么在你的硬盘上定位这个示例数据库然后更改代码中的路径,要么使用Visual Studio 光盘安装它。这样这个例子――你的第一个 VB.NET Office 2003 应用程序――就可以运用了。
[1] [2]
(出处:http://www.sheup.com)
[1] [2]