PDM/PLM/CAPP |
|
| 按行业筛选 |
|
|
| 按产品筛选 |
|
|
| |
查看本类全部文章 |
| |
|
|
|
基于Word的图文档管理方法 |
|
作者:解放 柯文 王宁生 |
|
在工程实践中大量用到多种格式的图文档,如DWG、DXF格式的图形文件,BMP、TIF、JPG格式的图像文件,TXT.DOC格式的文本文件,STEP文件及语音文档等。这此文档被按照一定的分类编码规则归类,并以分类编码号命名。为了对它们实施管理,本文将介绍在Visual Basic环境下开发的一个应用程序,通过该程序能自动生成Word格式管理文档,并实现图文档的管理。
要实现对Word文档的自动操作,可以用自动化工具Word内来完成,但Word内必须在Word内使用而不适用于应用系统的开发。而采用 ActiveX部件技术可以实现在VB中控制Word自动完成文档操作。其方法是先将图文档按编码顺序依次插入到Word文档中并标注图号,再生成图档目录。通过这种自动生成的管理文档可以实现批量图文档的管理,且通过图号目录可以方便地查找并定位到所需文档。双击所需文档后,该文档被激活。
这种图文档管理方法简单实用。对于图像文件,可以方便地实现查找、定位、预览和编辑。利用Word的打印功能,还可节约批量图档打印的时间。下而将详细介绍相关原理与技术。
1在VB中操作Word文档
1.1 ActiveX部件技术概述
ActiveX部件是一段可重复使用的编程代码和数据,它由ActiveX技术所创建的一个或多个对象组成。VB应用程序可以使用现有的部件,如包含在Microsoft Office应用程序中的部件、各家制造厂商所提供的代码部件、ActiveX文档或ActiveX控件中含有的部件等。此外,它还可以自行开发ActiveX控件。
ActiveX部件可以将现存的、完善的应用程序片段有效地结合在一起。使用ActiveX部件,可以在自己的应用程序中利用很多其他Windows应用程序所提供的功能,如Microsoft Excel、Microsoft Word和Microsoft Access中都提供了能通过VB应用程序操纵的对象。这样,开发人员就可以在自己的应用程序中使用Excel的电子数据表、Word文档或者Acces、数据库的属性、方法和事件。
1.2 VB操作Word文档的方法
使用ActiveX部件提供的对象与操作其他对象的方法十分相似。在VB应用程序,在使用部件对象之前,先要在工程中添加对该部件的引用,并声明对象变量,将对象引用赋予该变量,然后编写使用对象的方法、属性与事件的代码。在VB操作Word文档的方法如下。
(1)添加对部件的引用。从"工程"菜单中选择"引用",在"引用"对话框中添加对" Microsoft Word 8.0 Object Library"的引用·
(2)在程序声明Word对象变量,并将对象引用赋予该变量,方法如下。
Dim wdAppl As Word.Application 为Word应用程序声明对象变量。
Set wdAppl=New Word Application 将对象引用赋值给该变量。
上而的对象引用中的对象变量被声明为一个特定类的变量wdAppl,对象引用是事前绑定的。如果对象引用的对象变量被声明为一般的Object类的变量,则对象引用是事后绑定。例如也可以将对于Word对象的引用赋予下列Object类的变量wdApp2
Dim wdApp2 As Object事后绑定
Set wdApp2=Create0bject("Word.Application")
通常事后绑定变量wdApp2的代码比使用事前绑定变量wdApp 1的代码执行得慢。这是由于当声明一个变量As Object时,VB在编译期间不能确定该变量含有的对象引用的性质。在这种情况下,VB必须使用事后绑定,即VB在运行期间,才能确定对象是否具有代码中要使用的属性和方法。
(3)使用Word对象的属性和方法。将Word对象引用赋予对象变量后,即可用该变量操作对象的属性和方法。使用Word部件对象的属性和方法与普通对象没有任何差别。
部件提供的对象一般是分层次的。Office应用程序和其他ActiveX部件在它们的对象层次中提供了一个顶层外部可创建对象,即提供了对该层次中其他对象的访问以及对整个应用程序起作用的方法和属性。
例如,每个Microsoft Office应用程序提供一个顶层Application对象,用这些变量可以访问每个应用程序中的从属对象,以及这此对象的属性和方法。例如,用Application 对象的子对象Selection的TypeParagraph方法实现Word文档分段操作。代码为:
wdApp 1.Selection.Typelaragraph
在程序开发,I,若要使用Word对象的属性和方法来完成对Word文档的某种自动操作,一个方便的方法是利用Word 中的内录制器来录制相应的手动Word文档的操作过程,录制器可以自动创建内。Word先将内录制为一系列用VBA(Visual Basic for Applications)表示的宏代码。然后用户可以在"Visual Basic编辑器",将录制好的宏代码拷贝到VB应用程序中由于VBA是VB的一个子集,因此只需稍作修改,就能在VB程序中实现对Word文档的自动操作。但是,不是所有的手动操作都能被录制,内录制器不能录制鼠标在文档窗口的移动。例如,不能用鼠标移动插入点或通过单击、拖动等操作来选定、复制或移动项目。要录制该类操作,必须使用快捷键。
在本程中,因为涉及到对文件火、图文档的操作,因此使用了SFO对象模型.该模型提供了基于对象的上具来处理文件火和文件。对象的属性、方法和事件之前,要对其进行引用。引用方法是选择"工程"菜单的"引用"命令,再选择"Microsoft Scripting Runtime"复选框。创建FSO对象可以通过将一个变量声明为FileSystemObject对象类型来完成,例如:
Dim fso As New FileSystem
2程序设计与实现
2.1实施图文档管理的步骤
(1)对图文档进行分类编码
文档的分类编码有利于对其进行管理。在本系统文档的分类编码按照2段分类码进行。第一段为3位类别码,第二段为3位识别码。类别码用于对文档类别进行分类,同一类别的文档用识别码进行区分,因此用类别码和识别码就可惟一标识一个文档。文档的文件名前缀就用它的类别码和识别码进行命名。如某个文档的分类码为22_275,其220为它的类别码,275为它的识别码,则它的文件名前缀就是220_275.
(2)自动生成Word管理文档
在程序中可以创建图文档管理目录,将需要管理的图文档添加到管理目录内,或从管理目录,I删去图文档,然后可以根据管理目录内的图文档自动生成Word管理文档。管理文档生成的过程是:首先启动Word程序,可事先选择前台运行还是后台运行;接着创建新的Word文档,将图文档按编码顺序依次插入到Word文档,并标注图号,图号与编码号一致;然后在Word文档的前部生成图号目录;最后保存Word文档,关闭Word .
通过这种自动生成的管理文档可以实现批量图文档的管理。通过图号目录可以方便地查找并定位到所需文档,双击所需文档后,可以激活并编辑该文档。
2.2图文档的插入方法
将图文档插入到Word文档的方法可以总结为以下几种:插入法、嵌入法和链接法。在Word管理文档的自动生成过程中采用不同的图文档插入方法所产生的效果是不同的。
(1)插入法。与另外2种方法不同的是,该方法仅适用于图像文件。一幅13.6*6.7cm、24色、JYG格式的图片A用插入法插入到Word文档后为36KB。用这种方法将图像文件插入到Word文档后,图片可复原,但复原效果不理想。插入法是通过在VB程序中用Selection对象的子对象lnlineShapes的AddPicture方法来实现。
(2)嵌入法。常见的图文档都能用该方法插入到Word文档。图片A用嵌入法插入到Word文档后为4061KB ,图片可复原。虽嵌入后的文件字数大,但是其最大好处是,可以在Word文件中双击画而,迅速激活图文档直接进行浏览或编辑。对于批量打印图像文件并有较高清晰度要求时,可采用这种插入方法。嵌入法的操作在VB程序,用Selection对象的子对象lnlineShapes的AddOLEObject方法来实现.
(3)链接法。该方法与嵌入法的区别在于数据的存放位置及将其插入Word文档后的更新方式不同。在链接法中,对源文件的修改将反映到Word文档中。图片A用链接法插入到Word文档后,为394KB,图片不可复原。对于像PDF, DOC等非图像文件或较大的音像文件的管理,可以采用这种插入方法,并将文件以图标的形式显示于Word文档.插入Word文档的只是代表文件内容的图标。这样做可以使生成的Word文档所占空间较小。链接法的操作在VB程序中也用Selection对象的子对象lnlineShapes的AddOLE0dject方法来实现,其参数Link1olile设为True。若要以图标形式插入,参数DisplayAsleon设为True。
3 总结
本文介绍了一种通过VB应用程序自动生成Word文档来管理图文档的方法。该方法借助于宏录制器录制手动操作后生成宏代码,简单实用。用VB操作Excel,Access等其他Office应用程序时也可采用这种方法。这种在程序中操作Office工具的应用十分广泛。事实上,在用Delphi实现相似操作时,也可以借助于宏代码,但需要将VBA表示的宏代码转换成符合Pascal语法的形式。(end)
|
|
文章内容仅供参考
(投稿)
(如果您是本文作者,请点击此处)
(10/21/2007) |
对 PDM/PLM/CAPP 有何见解?请到 PDM/PLM/CAPP论坛 畅所欲言吧!
|