事实上,我们在日常工作中常会脱离Microsoft Word的操作环境。一般,用户是先建立好一些Word文件模板,然后利用所提供的应用程序功能向Word文件模板中插入域,然后用该域对应的值取代域值,这样就达到了向Microsoft Word文件中插入数据的作用。我们常把数据放入数据库中,数据库的内容不断地变化,我们的域值也跟着不断地变化,取到灵活自动更新的作用,要达到这方面的功能,就应该把数据库与Word域结合起来。
首先要解决这一问题,我们必须先了解Word域有关的知识:Word域代码位于花括号或大括号 ( { } )中,域类似于 Microsoft Excel 中的公式:域代码类似于公式,域结果(域结果:当 Microsoft Word 执行域指令时,在文档中插入的文字或图形。在打印文档或隐藏域代码时,将以域结果替换域代码。)类似于公式产生的值。可在文档中切换显示域代码及其结果。正好,数据库的字段名对应域代码,字段值对应域结果。
下面是本人利用VBA编写的一通用的处理Word域的程序:
主要功能:通用VB6编写通用的类,给用户提供可视化的编辑界面,用于用户在Word文件中插入域标志。针对Word文件或Excel表格文件,扫描整个文件,将其中的域标志(如Set “aaa”)取出来,然后通过从数据库中取出”aaa”字段所对应的值,将值填写到文件中域对应的位置。若对应位置已有值,则判断该值与要填写的值是否相同,若不同则替换。插入值分为:
1.单纯的值,直接使用一个值替换域。
2.表格中的单元格。若该表格填写不下,是否增加表格单元?以及与该单元关联的域等。
开发方法:启动VB6,新建一ActiveX Dll工程,把工程名更改为VbaWord,把类名Class1更改为CSetDocField,向工程中增加一窗体Form1, 窗体标题为处理Word文档,在Form1上加入2个CommandButton,用于打开文件和保存文件用的命令按钮;2个ComboBox,用于所插入的字段名;2个 Label;2个CommonDialog,用于执行打开文件和保存文件。界面如下:
按工程--引用--Microsoft Word 10.0 Object Library引用Word(OFFICE 2000为Microsoft Word 9.0 Object Library)。
List1是Form1的代码窗中定义的变量。List2是在Form1的代码窗中定义定义打开Word文件的过程。建立Word应该对象及文档对象,并打开文件。
在文档中插入域(KeyWord:域的关键字)。我们利用Word文档对象的域对象的Add方法向Word文件中插入域。域的Data属性代表该域的名称。插入域时应该选取得插入点(Selection),既用户光标处位置。如果该位置是单元格且已插入域应该提示是否覆盖。list3
我们可以通过选择点的表格数判断插入点的性质。表格数为0,则选择点不位于单元格中,反则不位于单元格中。List4
打开Word文件.并使处理界面位于Word最顶端,适当调整Word位置,关闭Word其它功能并保存Word文件。List5
用户选择所插入域的域名,并在光标处插入域。
PrivateSub Combo1_Click()
Dim KeyWord AsString
KeyWord = Combo1.Text
InsertField(KeyWord)
EndSub
域所对应多值时,域只能插入表格中。且要与单值域区分,标记为多值插入。List6
关闭时的部分代码List7
下一部分我们继续介绍CSetDocField类的内容编写。
欢迎评论或投稿