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的意思。