开篇:润墨网以专业的文秘视角,为您筛选了一篇基于VBS的VFP与WORD数据交流范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
【摘 要】讨论了在vfp中控制word的方法,重点讨论了从VFP输出数据到WORD文档的方法。
【关键词】Visual Foxpro数据输出调用WORD
一、分析遇见的问题
目的:用VFP做关于稽征所对违章行为进行处罚的一个小系统,系统的主要内容是:“违法案件”方面的。案件的信息量平均约有二十项左右,案件的相关信息数据是需要处理掉的,需要我们特别关注的有:案件最后的处理结果,相关每条信息都要存档为一个分类系列中,比如:车辆交通违法行为中:交通行政执法询问笔录、交通违法行为通知书、立案审批表等,很多书面的文件,都要以文档的形式存放。每个文件的格式都是多种多样的,一个文件至少一页,多则达到三十多页。JVFP在进行程序设计时,我们常使用报表来处理文档的输出情况,当然了VFP在报表方面也存在了很多的不足之处,和其他的数据库管理系统一样。
(一)页面不可以随意改变。用户本身不能对报表的宽度和长度进行改动;
(二)在报表的整体效果看起来不错的情况下,就必须注意数据库中的长度如果不一样,就会使输出报表中:“每个栏位、宽度”不协调,数据库系统就无法根据正确的信息内容和格式对每个栏位的宽度进行调整;
(三)数据库报表输出后,用户就不可以随意改动表格的格式了;
(四)违法信息中一些特定栏位的单独输出,还有一些组合输出,现有系统是无法实现的。根据上述系统中的缺点,用报表作稽征所处罚系统的数据输出载体是不适合的。
二、问题解决方法
系统电脑操作员可以相当熟练的操作WODR棚,当他们进行处罚案件中操作系统时,要先手动将信息输入到WORD文档中,然后再用WODR编辑,最后确定文件内容后,就可以直接打印出文件。WORD相比较于VFP而言具有很多的优点,首先它不仅具有很强的排版功能而且还具有非常高的普及度。所以WODR自然是系统的数据输出载体的理想选择。另外WORD所提供的VBS系统可供其它语言调用,即用命令来操作WODR的系统。在VFP中却是先用CRE―ATEOBJECT()函数创建”WORD对象变量,利用“面向对象”的程序设计,要将自己数据库的数据输送到WORD中,必须调用VBS的具体命令才可以做到。在稽征处处罚系统中,用WORD提前制备文档框架后,在输出某个违法案件信息时,应首先把这些格式文档打开,最后将数据填上。
三、计算方法及实际例子
现在把相关的调用及其插入数据这一部分的关键词进行一下详解:
(一) 调用的方法
1.Word App=CREATEOBJECT("Word.application)&&定义对裂变量
Word App
首先:用定义式打开WORD 文档,然后将打开的WORD应用程序重新命名一个变量名,之后就可以直接对此变量进行操作。
2.将WORD文档退出
为了避免丢失工作信息,所以我们在退出WORD文档之前要将先前打开的其他文档处理好,在退出前必须进行保存操作。
(二)操作此文档
1.打开文档
交通稽查d、交通行政执法询问笔录.\d0c)Word app.Documents.Open(c:
2.新建文档
Word app.Document.Add
3.关闭文档
Word app.Documents(n).Close
4.保存文档
Word app.Active Document.t~lves.8("&w name)
5.多文档进行操作
文档:ACTIVEDOCUMENT
任意打开另一个文档:Documents(n)或者Documents(文件名)。
注意:如果我们使用的是第一种编号方式,那么最后一次打开的那个文档编号则为1,按照打开文档的时间顺序依次将其编号为2,3,4,5...............。
(三)输入时的操作
在这里我们主要说一下插入时的操作,也就是把数据插入到一个现有内容的收稿日期:2006-01-03这个文档的固定位置上。
Bookmarks(n)或Bookmarks(书签名):这是已经设置的第N个或某个名称的书签位置。
Range(m,n):从第M个文档开始到第N个文档结束时的一串字符
paragraphs(N):文档中的第N段
上面说的这几种方法都是绝对指代,不可以组合起来使用。当我们插入的是一段文字或不规则表格中的一些地方时,则最好使用书签方式;如果我们插入的是一段单独的文字,最好使用paragraphs(N)来进行操作。因为我们单独使用数字时较为繁琐,经常是结合一个特定值的时候才使用,比如Range(0.end),其中的end就是我们所设置文档的末尾变量,所以我们要对文档的字符=IF非常熟悉。
下面是End这种设置方法操作程序的参考示例:
通过F这种程序段将VF’I)中的数据移动到文档中,这个文档内容为文件“交通行政执法暂扣乍辆退还通知书”。
设置加:在f}l倾斜F划线这种格式的字符钱插入数据。
WAIT正在访问Word软件……WINDOW NOWATI,
Word App=CREATEOBJECT("Word.application)
If Type("Word App)0
W AIT CLEAR
Message Box(”访问Word失败!请检查操作系统安装是否正确
Word软件!,48.没有安装Word!)
RETURN
ENDIF
Word App.Visible=.t.&&显示WORD窗口
Wdadress='c:、交通稽查\WD
Wname=年份表达式+案件编号表达式&&产生这个案件文档的名称,但要注意这里所有的表达式都应该为字符型
Word app.Documents.Open (&wdadress.、交通行政执法暂扣车辆退还通知书.do)
下面内容是将VFP中的相关数据插入到一个文档的指定位置,但是在插入前,必须将VFP中相关数据转换成字符型。
比如:
Word app.Active Document.Bookmarks(1).range.text=所名表达式+稽
Word app.Active Document.Bookmarks(2).range.ten=年份表达式
Wonlapp.Active Document.Bookmarks(案件号).range.text=案件编号表达式’
Word app.Active Document.paragraphs(2)..text=当事人:+当事人姓名表达式
(车型).reage.text=车型表达式
(车号牌).range.txet=车号牌表达式
Word app.Active Document.Bookmarks(所名末).range.text=所名表达式
end=wordapp.ActiveDoument.Content.End&&设置文档末尾变量
wodrapp.ActiveDocument.Range(O。Edn).copy&&整篇文档的复制
w0rId印p.Documents.Open("&wname)&&这个文档在创建所有的文档之前就已经建好了,我们将把这个案件所有相关文件的文档内容集合起来:
end=wordapp.Documents("&wname).Content.End-!&&设置文档末尾变量
if lent(WodrApp.Documents("&wname).paragraphs(1).Range.text)>l&&检查此文档是不是空白文档
WodrApp.D0cuInents(&wn~fle).Raneg(end.end).insertBreak&&由于每个新文档都是从新......页开始的,所有在文档的末尾我们要插入分页符
endfi
end=wordapp.Documents("&wname).Content.End&&设置文档未尾变量
wordapp.Docyments("&wname).Raneg(end-!.end―1).paste&&将格式文档中的所有内容进行粘贴
wordapp.Documents(2).saved-.t.&&原来被改变的格式文档放弃存盘
wodrapp.Documents(2).close&&关闭格式文档
wordapp.Documents(1).close&&关闭案件文件文档
releaseWordApp&&将WIRD这种对象变量释放
文档操作完成后生成的程序内容如下:
交通行政执法暂扣车辆退还通知书
晋交XX稽[2013]00013号
当事人:李某
因你(单位)所属车辆在某时某地违反了交通行政管理规定,根据《山西省公路养路费征收管理条例》第XX条XX款,于2013年2月1日,本交通行政执法机构现将你的三箱小轿车。车型XXX,机动车号牌为晋XXXXX的车辆依法实施行政强制措施予以暂扣。由于在法定期限内,接受了执法处理,并已履行,现将暂扣车辆退还,请查收。
谢谢配合!
取车人签名:XX交通稽征所(印章)
2013年XX月XX日
四、结束语
我们在VFP操作中,对WORD调用操作时,还要注意两点:
(一)必须参考WORD中的VBS(WORD要帮助目录中的Microsoft Word Visual Basic进行参考)
(二)Word中的VBS是VisualBasic中的语言结构。
参考文献:
[1]东方人华.VisualFoxpro8.0入门与提高.北京:清华大学出版社,2004―8.
[2]陈亚丽等.基于Excel与OLE技术的通用报表的设计与实现.哈尔滨:电脑学习,2005,(6).
作者简介:
宋国琴 肖建琼 西华师范大学实验中心西华师范大学助教,计算机应用硕士,研究方向为计算机网络。