开篇:润墨网以专业的文秘视角,为您筛选了一篇OFFICE文档对象编程实现文档数据自动处理范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘要:现今各行业中大量单位均采用信息管理系统、办公自动化系统等实现工作及数据处理的自动化,这些信息处理过程往往涉及大量文档,尤其是一些office文档。该文分析了OFFICE对象编程实现文档数据自动处理的原理。同时介绍了利用OFFICE对象编程进行文档合成,文档数据比对等实例的实现过程。利用OFFICE对象编程进行简便的二次开发,可辅助信息系统更好地应对用户在文档处理方面不断产生的新需求。
关键词:VBA;OLE自动化;OFFICE对象
中图分类号:O141 文献标识码:A 文章编号:1009-3044(2012)31-7495-03
随着计算机技术的发展和计算机的普及使用,各种信息管理系统被应用,数据处理自动化极大地提高了工作效率。虽然多数信息管理系统都是基于数据库保存组织数据的形式开发的,但涉及普通文档形式保存数据的情况时,难免要利用文档编程技术实现数据处理的自动化。OFFICE文档对象编程在许多针对OFFICE文档的应用中被广泛使用,本文将介绍OFFICE对象编程的一般原理,并给出对EXCEL文档进行数据比对,EXCEL文档与WORD文档结合进行数据合成等实例的实现过程。各种信息管理系统多是针对前期需求分析开发的,当用户在系统使用中产生新的文档数据处理需要时,利用OFFICE文档对象编程进行简便的二次开发可快速满足需求。
1 文档数据自动处理的原理
一般不同类型的文档都有各自的文档格式。在程序员角度,如果要编程实现程序读、写或处理文档中的数据,必须要了解文档格式。对记事本文件、C语言源码文件等一些格式简单的字符流文档,无论用何种编程语言,一般函数库中的普通文件处理函数就可实现文件读写操控,但OFFICE文件却不同,其文档格式较复杂,不是简单的字符流,其商业版权也使得其文档格式并不对外公开。幸而微软公司提供了OFFICE编程接口。
伴随着微软技术发展,OFFICE文档对象编程技术形式不断变化。早期为了让应用程序之间自动获取彼此的最新数据,微软推出对象的链接与嵌入技术(Object Linking and Embedded,OLE),应用程序的数据交换提高到“对象交换”,程序间可获得彼此的应用程序对象,从而可直接使用彼此的数据内容。但OLE1.0对象使用上还有许多限制,到OLE2.0阶段,OLE自动化、OLE控件、OLE文档使应用程序间能更好的相互协调工作。
OLE自动化允许一个应用程序自身暴露一些可编程对象给其它程序的应用程序,被使用对象的一方是自动化服务器,利用并操纵自动化服务器提供功能的一方叫自动化控制器。微软还为其桌面应用程序(尤其是Microsoft Office)推出了通用自动化语言——VBA(Visual Basic for Application),利用VBA或其他编程语言都可以针对OFFICE文档进行编程,实现文档数据的自动化处理。
在EXCEL中利用VBA语言操纵单元格中的内容,进行计算或数据处理时,EXCEL本身既是OLE控制器又是OLE服务器,若进行创建WORD文档等工作,则WORD是OLE服务器,EXCEL是自动化控制器。如用VC或VB等编程语言在程序中创建并编辑一个Excel工作表,则开发的程序是自动化控制器,EXCEL则是自动化服务器。从实现上讲OLE自动化是利用面向对象编程思想的深化,以com组件技术实现。
无论以何种形式针对OFFICE文档进行面向对象编程,一般都是通过创建或获得OFFICE文档对象,通过对对象属性、方法等的编程,实现程序对OFFICE文档数据的自动处理[1-5]。虽然随着各种新技术和新名词的出现,VBA、OLE自动化等技术看似已陈旧,但实际上在很多场合下,其数据处理的自动性及开发快速的特性使得其仍有较大的应用价值。
2 利用VBA进行EXCEL中的数据对比
VBA不能独立使用,需要一个宿主应用程序,微软的OFFICE软件套装中均支持VBA,并提供VBA编辑器方便开发。一般为了开发方便,用户可以先录制符合条件的宏,然后调整修改VBA代码,编写适合自己需求的自动化程序,实现对OFFICE文档数据的自动处理[1]。
虽然Office 应用程序随着时间的推移已经发生了演变,不可避免地提供不同的对象模型,但仍保存了一些一致性,VBA对象模型从上到下有着一般性的层次结构:
1) 顶层为Application 对象。Word、EXCEL、PPT等都有自己的Application对象。Application对象 代表了整个应用。
2)不同的Application 对象下有不同的子对象。如EXCEL中是Workbooks 集合对象,而WORD则主要是Documents 集合对象。
3)再向下,EXCEL有Workbook对象代表 Microsoft Excel 工作簿,Worksheets集合对象代表指定的或活动工作簿中所有工作表对象,再到Worksheet对象代表一张工作表,再通过Range和Cells到单元格。类似地,WORD中深化各个 Document 对象,然后深化各个 Range 对象。通过各种细节属性及方法的使用完成对文档的细节操控。
以银行工作为例,业务数据一致性比对经常发生,每次抽检的数据字段可能不同,现有的信息系统可能无法提供这种临时性的功能。此时就可以利用VBA在文档中快速完成比对。如比较EXCEL文档中两列账户信息,筛选出B列中没有出现在A列中的账户有哪些。此时EXCEL没有合适的公式可用,但通过VBA中编程实现循环对比即可快速完成,示例代码如下:
3 VB编程实现WORD文档数据自动整合到EXCEL
下面讨论的实例基于这样的应用:员工招聘时每个员工都有一个单独的Word文档,但现有的办公系统不提供该格式WORD文件的处理,为了方便统一汇总和管理所有新员工信息,需要自动批量处理这些WORD文档,将文档中需要的数据统一提取到EXCEL文件中。
FileSystemObject对象模型,是微软提供的专门用来访问计算机文件系统的,结合FSO和VBA对象编程可以批量处理OFFICE数据文档。FSO模型并不是VBA的一部分,它以COM组件的形式提供,包含在脚本类型库中。在VBA编辑器中使用时,可选择"Tools"菜单下"References...",在出现的对话框中选择"Browser..."选中COM对象文件C:\Windows\System32\Scrrun.dll。在其他开发平台中需通过相关的库引用设置菜单引入相应的项(如VB开发平台需在工程|引用中添加microsoft scripting runtime)。
将多个WORD文档数据批量提取到EXCEL的实现过程主要是通过VBA对象操控EXCEL文件,利用FSO循环处理文件夹下的批量WORD文件,这些WORD文件有相同的格式和数据表,利用VBA的WORD文档对象获取每个文件中的详细信息,然后写入到EXCEL文件中。如果没有复杂的界面要求,完全可以直接在EXCEL文件中实现。本例利用VB开发平台设计了一些简单的用户交互界面,但本质上仍然是FSO和VBA技术的结合使用,关键代码如下:
4 结束语
对OFFICE文档数据进行处理,可以通过嵌入VBA的OFFICE文档实现;微软还提供了VSTO(Visual Studio Tools for OFFICE),基于Visual studio平台将应用程序编程和VBA的OFFICE对象编程结合起来,实现更丰富的OFFICE文档应用的二次开发;或者对现有的信息系统进行二次开发。各种方式开发代价不同,都能实现文档数据自动处理,其本质原理都是利用各种OFFICE对象模型实现的自动化数据处理。在工作中可以根据不同的应用环境和情况选择最合适的方式提高数据处理自动化程度,提高我们的工作效率。
参考文献:
[1] 王贵,石仙.利用VBA在Excel和Word中完成复杂的数据引用[J].电脑知识与技术,2011,24(7): 5908 -5010.
[2] 刘永平.基于VBA的毕业设计文档自动生成系统[J].西安邮电学院学报,2011,2(16):46-48.
[3] 余艳艳,周明刚.VC++实现Excel操作自动化的方法研究与应用[J].企业技术开发:学术版,2010,29(2):7-9.
[4] 周静,袁方,袁江鹭,等.基于VSTO的Office二次开发[J].福建电脑,2011(9):22-23,36.
[5] 桑银邦,王成良.XML数据交换在Office二次开发中的应用[J].计算机工程,2010,22(36):78-80.