分享
 
 
 

使用.NET开发Office2003解决方案

王朝c#·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

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 应用程序――就可以运用了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有