在本文中,我将结合我的个人经验,和大家讨论一下在BCB 6 中开发Office(主要是Ex cel)程序的心得。 一、用控件还是用 OLEAu tomation? 这个问题应该说很常见。我也在任何可能的情况下坚持我的主张:用 BCB 6 提供的Serv er控件组。如果你是用 Delphi 6/7 版本开发,那么用 Delphi 提供的Serv er 控件组。 这样做有什么好处?我个人认为至少有如下两个: 第一,维护结构化+OO 的程序设计风格。例如: Ex celApplication1->set_Display Alerts(0,false); Ex celApplication1->Qu it(); 又如: int SheetCou nt=Ex celWorkbook1->Worksheets->Cou nt; 这些代码都还是比较直观的。而且很具有 OO 的美感。 第二,强类型检查胜于弱类型检查。 如果使用 OleGetProperty 或者 OleSetProperty 函数,那么对传递给这两个函数的参数,是没有办法控制的。例如,我完全可以随心设置一个单元格的属性 FOO 为 100。但是这样的函数调用在运行期一定会出错。而使用 Serv er 控件就不会有这个问题——编译期就不能通过。可以在编译期发现并纠正的错误,不要留到运行期去解决。这是我的主张。 二、必要的辅助手段 使用 BCB 编写控制 Ex cel 的程序,是很繁琐的。因为有时编译通过后会出现难以琢磨的异常!又有一种很无助的感觉:BCB 在这上面的帮助简直是BS。CodeInsight 的速度又是相当的慢,无法忍受! 不过,我们不要轻易放弃。根据我的经验,在BCB 下要想好好掌握 Ex cel 编程,必须掌握三个获得帮助的途径。这三个获得帮助的途径就是(以我个人喜好的程度降序排列): 1. Ex cel 本身的宏命令。我现在的习惯是,如果我要在BCB 中实现一个功能,但是却不知道相应的方法和参数,我就会打开 Ex cel,在随便一个Sheet 中用宏记录下我要进行的操作,然后研究宏代码。这样做,肯定能获得正确的方法名,但是对参数的数量和类型却不敢保证:这是因为 VBA 可以选择不 PASS 一些缺省参数。根据我的个人经验,这样做的有效性应该在80%左右,简易性在100%。 2. Office 自带的VBA 帮助。这个帮助在Office 安装过程中一般不是缺省安装的。对于Office 2003 中文版的用户,应该检查 C:\Program Files\Microsoft Office\OFFICE11\2052\下是否有类似 VBAx x nn.chm 文件。其中x x 应该是如下字符串之一:AC(Access),GR(Microsoft Graphics),OF(Office),OL(Ou tlook),O...