在VFP中操作WORD对象

要把VFP与WORD结合使用,主要应用了OLE技术,众所周知,自从OLE技术推出以来,完全改变了软件世界的面貌,不需通过DDE技术,把可以方便地实现两个应用程序之间的通信。VFP提供了许多OLE对象的操作函数,而WORD97也支持OLE技术,通过相应的编程,用户可以在程序中激活OLE对象,并对其进行一系列的操作,例如在表单中可以通过插入OLE对象方式,激活WORD文档,如图所示:
在对象类型中选择WORD文档,完成后按确定按钮,即可对此WORD OLE对象进行编程,主要用到属性列表如下:
|
属性名 |
说明 |
|
Autosize |
设定OLE对象大小是否可随其中插入的对象自动调整尺寸 |
|
Autoverbmenu |
设定激活OLE对象鼠标右键支持的快捷菜单 |
|
Autoactivate |
设定是否可以执行鼠标右键OLE对象的弹出菜单 |
|
Autovermenu |
设定OLE的执行状态为何种方式 |
以上介绍了一个在表单中建立WORD对象的方法,这里再介绍一个在PRG程序中打开WORD文档并对其进行编辑的例子,通过查看注册表内容中可知,WORD97在注册表中的OLE automation为WORD.APPLICATION,由此可在程序中调用此方法来激活WORD97进入字处理环境中,语法如下:
CREATEOBJECT("WORD.APPLICATION")
通过这段代码创建WORD对象后并不立即启动WORD97,这是因为createobject()函数执行时只是将WORD.APPLICATION OLE对象变成在VFP环境中的一个OLE对象而并未将其显示于桌面中,我们可以通过把WORD的VISIBLE默认属性为设置为.F.而使其在桌面中显示,完整的调用代码如下:
PUBLIC MYWORDMYWORD=CREATEOBJECT("WORD.APPLICATION")MYWORD.VISIBLE=.T.
运行以上代码后,读者朋友可能会发现,WORD97启动后,既没有打开原有的文档,也没有新建一文档,这是因为,以上代码还缺少应用一个方法,它就是ADD,新建一文档使用方法如下:
MYWORD.DOCUMENTS.ADD
同理,打开文档的代码如下:
MYWORD.DOCUMENTS.ADD(“***.DOC”)
关于WORD支持什么样的OLE方法及属性,可使用小工具OLE/COM object viewer,此工具在VISUAL STUDIO光盘中的COMM目录下即可找到,有兴趣的朋友可详细试用。
2、用VFP管理WORD文档。
除了在VFP中调用WORD进行文字处理外,我们还可以对WORD文档进行管理,大家可能有这样的经验,日常工作中用WORD97建立了大量的文档,由于数目日渐增多,查找不便,难于管理,事实上,我们可以用VFP编写一管理系统对日常工作中的文档进行管理,这里可涉及了一个很关键的技术性问题,即如何把不同目录下的文档集中在同一数据表中呢?只要用数据表存贮各WORD文档,就可以生成管理表单对文档进行新增、删除、编辑了。
笔者通过试验发现:可使用命令APPEND GENERAL把文档COPY到数据表中的通用字段中,用函数GETDIR()选择不同的当前目录来复制所需要的WORD97文档,再用ADIR()将需要管理的WORD文档存放在一数组中,完整的代码如下:
CREA table oletable(name c(40),worddoc g) &&建立表oldtable.dbf,其中name为WORDCD getdir() &&文档名nfiles=adir(awordfiles,"*.doc") &&把选取的文档放到一数组awordfiles中,IF nfiles>0 &&并把文档数目放在变量nfiles中for i=1 to nfilesAPPEND blankREPLACE oletable.name with awordfiles(i,1) &&把文档存放在数据表中APPEND general worddoc from awordfiles(i,1)ENDFORELSEMESSAGEBOX("此目录下无此文件类型!")ENDIF
运行以上的代码就可以把文档内容存放中数据表中的通用字段,同时建立管理表单后就能方便地管理文档了。本例主要解决了如何存放文档的问题,至于如何通过数据表进行管理WORD文档,及具体的功能就需要大家根据不同的要求编写相应的表单了。
应用OLE技术,我们在VFP应用系统中不单可对WORD97进行操作,也可以与所有支持OLE技术的应用程序进行数据交换,如:EXCEL、INTERNET EXPLORER等等,关于更深一层的OLE应用问题,并非一文能解释,笔者在此不再讨论,欢迎大家对上文提出意见。
猫猫的心里话
加菲猫的VFP|狐友会社群接收投稿啦
加菲猫的VFP,用VFP不局限VFP,用VFP混合一切。无论是VFP,还是JS,还是C,只要能混合起来,都可以发表。
商业模式,销售技巧、需求规划、产品设计的知识通通可以发表。
暂定千字50元红包,,优秀的文章红包更大,一经发表,红包到手。
如何帮助使用VFP的人?
用VFP的人,有专业的,有非专业了,很多人其实是小白,问出的问题是小白,如果问题不对,我们引导他们问正确的问题。无论如何请不要嘲笑他们说帮助都不看,这么简单的问题都不会,嘲笑别人不行,而无法提出建设性答案,是很low的。
我们无论工作需要,还是有自己的软件,都是是需要真正的知识,如何让更多人学习真正的VFP知识呢,只需要点赞,在看,能转发朋友圈就更好了。
加菲猫的vfp倡导用“VFP极简混合开发,少写代码、快速出活,用VFP,但不局限于VFP,各种语言混合开发”。
我已经带领一百多名会员成功掌到VFP的黑科技,进入了移动互联网时代,接下来我们要进入物联网领域。
2026年狐友会社群会员继续招募中
社群会员获取的权益有:
祺佑三层开发框架商业版(猫框),终身免费升级,终身技术支持。
开放的录播课程有:
微信小程序,微信公众号开发,H5 APP开发,Extjs BS开发,VFP面向对象进阶,VFP中间层开发,VFP Layui 开发
源码类资源有:
支付组件源码,短信源码,权限组件源码,一些完整系统的源码。这个可以单独出售的,需要的可以联系我。
会员也可以实现群内资源对接,可以接分包,合作等各项商业或技术业务



夜雨聆风
