powerbuilder(以下简称pb)是程序员常用的开发工具之一,pb的datawindow为编程人员提供了一个方便直观的数据处理工具,但对一些特殊文档的处理,用pb自身去实现十分困难,若能利用word强大的文档处理功能却能达到意想不到的效果。 下面笔者介绍如何在pb中调用word以实现对word文档的全文搜索。
从vba到powerscript
pb与word结合的基础是微软的自动化技术(ole automation),通过ole将数据从pb传至word,再借助word本身具有的vba功能可完成许多复杂的任务。通过ole技术实现pb对word的控制,必须先将vba语句转换为pb所能识别的powerscript语句。此处有个简单的办法可以获得正确的vba语句:
打开word工具菜单中宏子菜单的录制宏命令,命名后保存,然后返回至word主窗口,此时可以在主窗口的左上角看到宏的悬浮菜单,接着进行所需要的操作(如键入字符串、改变字体颜色、插入书签、查找特定字符串等操作),关闭宏。接下来再到工具菜单中的宏子菜单中选择 visual basic编辑器,进入宏编辑器,此时可以看到刚才所有操作的vba代码。
注: 如果想详细地了解vba语法,可以参考word本身提供的帮助文件(office 目录下2052文件中的vbawrd9.hlp文件)。
接下来需要将vba语句转换为pb支持的powerscript语句,vba中既有语句又有函数,而且,语句和函数使用的语法格式是不同的,但在powerbuilder 中却有相同的语法格式。例如:我们可以在宏编辑器中看到如下代码:
sub macro1()
selection.information(wdwithintable)
selection.moveright unit:=wdcharacter, count:=5
selection.typebackspace
end sub
我们可以在vbawrd9.hlp中找到moveright()的定义:
selection.moveright(unit, count, extend)
unit optional variant: wdcell, wdcharacter, wdword or wdsentence. default = wdcharacter.
count optional: . number of units to move. default = 1.
extend optional: wdmove or wdextend
下面给出了pb对应的语法格式:
// pb语法格式
ole_object.selection.information[12]
ole_object.selection.moveright(1,5,1)
ole_object.selection.typebackspace()
由于技术方面的原因,像wdcell、wdcharacter、wdword、 wdsentence这些枚举类型的常量值,pb并不知,所以必须将其转换为pb可知的常量,这可以通过以下简单的方式来实现:
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器