欢迎来到天天文库
浏览记录
ID:28483468
大小:209.00 KB
页数:25页
时间:2018-12-10
《如何利用VBA编写控制Word域的功能》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、&表1:工程工程名称设计阶段工程检索号卷册号项目名称新制字数图片数建模工具学习(2)http://www.21cmm.comfw-jm-2002软件工程专家网6010003表2:校核序号校核主要问题执行情况1排列不齐No2文字错Yes3文字错Yes4文字错No5文字错Yes6文字错No表2:注册网址Word域在软件开发中的应用liyu摘要域是Word最具有实用价值的功能之一,它表示文档中可能发生变化的数据或邮件合并文档中套用信函、标签中的占位符。MicrosoftWord可以在您使用一些特定命令时插入域,如“插入
2、”菜单上的“日期和时间”命令。您也可使用“插入”菜单上的“域”命令手动插入域。1.引言事实上,我们在日常工作中常会脱离MicrosoftWord的操作环境。一般,用户是先建立好一些Word文件模板,然后利用所提供的应用程序功能向Word文件模板中插入域,然后用该域对应的值取代域值,这样就达到了向MicrosoftWord文件中插入数据的作用。我们常把数据放入数据库中,数据库的内容不断地变化,我们的域值也跟着不断地变化,取到灵活自动更新的作用,要达到这方面的功能,就应该把数据库与Word域结合起来。首先要解决这一问
3、题,我们必须先了解Word域有关的知识:Word域代码位于花括号或大括号({})中,域类似于MicrosoftExcel中的公式:域代码类似于公式,域结果(域结果:当MicrosoftWord执行域指令时,在文档中插入的文字或图形。在打印文档或隐藏域代码时,将以域结果替换域代码。)类似于公式产生的值。可在文档中切换显示域代码及其结果。正好,数据库的字段名对应域代码,字段值对应域结果。2.实现功能————&下面是本人利用VBA编写的一通用的处理Word域的程序:主要功能:通用VB6编写通用的类,给用户提供可视化的编
4、辑界面,用于用户在Word文件中插入域标志。针对Word文件或Excel表格文件,扫描整个文件,将其中的域标志(如Set“aaa”)取出来,然后通过从数据库中取出”aaa”字段所对应的值,将值填写到文件中域对应的位置。若对应位置已有值,则判断该值与要填写的值是否相同,若不同则替换。插入值分为:A.单纯的值,直接使用一个值替换域。B.表格中的单元格。若该表格填写不下,是否增加表格单元?以及与该单元关联的域等。3.操作步骤3.1建立项目开发方法:启动VB6,新建一ActiveXDll工程,把工程名更改为VbaWord
5、,把类名Class1更改为CSetDocField,向工程中增加一窗体Form1,窗体标题为处理Word文档,在Form1上加入2个CommandButton,用于打开文件和保存文件用的命令按钮;2个ComboBox,用于所插入的字段名;2个Label;2个CommonDialog,用于执行打开文件和保存文件。界面如下:3.2在项目中加入引用按工程--引用--MicrosoftWord10.0ObjectLibrary引用Word(OFFICE2000为MicrosoftWord9.0ObjectLibrary)
6、。3.3增加操作窗体在Form1的代码窗中定义以下变量:OptionBase0'申请Word应该对象及文档对象PrivatewdAppAsNewWord.Application()PrivatewdDocAsNewWord.Document()'所处理的Word模板PrivateFileNameAsString'申请CSetDocField对象PrivatemDocFldAsNewCSetDocField()————&'Word工具栏对象及菜单栏对象DimCommandBarIndex()AsIntegerDim
7、SaveCommandBarMenuIndex()AsInteger'在Form的Load的事件中定义的打开和保存文件的格式,并填充ComboBox数据。ComboBox数据对应数据库表的字段名,这里由CSetDocField的属性提供。PrivateSubForm_Load()DimiAsIntegerCommonDialog1.DialogTitle="打开"CommonDialog1.Filter="Word文档(*.doc)
8、*.doc
9、Word文档模板(*.dot)
10、*.dot"CommonDialog
11、2.DialogTitle="保存文件"CommonDialog2.Filter=Word文档(*.doc)
12、*.doc
13、Word文档模板(*.dot)
14、*.dot"FieldCount=0Me.ScaleY(Me.height,fromscale:=vbTwips,toscale:=vbPoints)Fori=1TogFieldColl.CountCombo1.AddI
此文档下载收益归作者所有