当前位置:文档之家› 利用VBA实现Word文档的批量拆分与合并本文作者

利用VBA实现Word文档的批量拆分与合并本文作者

利用VBA实现Word文档的批量拆分与合并本文作者
利用VBA实现Word文档的批量拆分与合并本文作者

利用VBA实现Word文档的批量拆分与合并本文作者(范晓燕,周涛峰),请您在阅读本文时尊重作者版权。

利用VBA实现Word文档的批量拆分与合并

摘要:介绍了利用VBA实现Word文件批量合并与拆分的方法和技术,并给出了关键代码,通过该方法,可以快速处理大量文档,实现文档的批量合并与拆分,可以大幅提高日常工作效率。

关键词:Word VBA;批量;合并与拆分Word Document Using VBA to Achieve Mass Split and Merge

FAN Xiao-yan1,2, ZHOU Tao-feng3

(1.School of Optoelectronic Information and Computer Engineering, University of Shanghai for Scince and Technology, Shanghai 200093, China; https://www.doczj.com/doc/1b7081181.html,puter Application school, Shanghai Technical Institute of Electronics Information, Shanghai 201411, China; 3.School of Fisheries and Life, Shanghai Ocean University, Shanghai 201306, China)

Abstract: Description Word document using VBA to achieve combined with the split-volume methods and techniques, and the key code is given by this method, you can quickly handle a large number of documents for document merging and splitting volume, can significantly improve the efficiency of daily work.

Key words: word VBA; volume; merger and split

微软公司的Word是使用范围非常广的办公软件,具有强大的编辑功能,可以编辑文字、图形、图像、声音、动画,还可以插入其它软件制作的对象,能够满足用户的各种文档处理要求,为日常办公带来了极大的方便。

VBA是微软公司在Office产品中提供的程序设计语言和环境,它是Office功能的扩展,可以实现Office功能的二次开发,尤其在处理大量重复性工作时,VBA显得异常强大,可以成倍提高工作效率。

1 问题的提出

日常办公中,经常需要处理Word文件,当文件数量较少、文件体积较小时可以轻松应对,但当文件数量较多、文件体积较大时,操作起来就要花费大量的时间和精力,而且很容易出错。

比如,每年年末,公司所有员工都要交工作总结,人事部门需要将所有人的总结汇总到一个文件里,以便向总经理汇报。再比如,每年年末,公司要将每个员工的工作业绩发给他们本人,而公司业绩管理系统导出的文件中,所有人都在同一个Word文件里,需要将他们一一拆分出来。

这种情况下,可以借助VBA实现文件的批量操作,大大提高办公效率和准确性。

2 解决思路

2.1 批量合并

对于第一种情况,需要用到文件的批量合并,可以编制VBA程序,让程序自动查找每一个需要合并的文件,将里面的全部内容自动复制到指定的合并文件中,并自动保存,直到所有需要合并的文件都完成合并。

在这个过程中需要作以下准备:1)所有需要合并的文件都在同一个文件夹中;2)所有需要合并文件的文件名要有一定的规律,最好是连续的数字,不是连续数字也可以,但稍微麻烦,这个可以用批量改名软件实现。

2.2 批量拆分

对于第二种情况,需要用到文件的批量拆分,可以编制VBA程序,让程序在需要拆分的文件中,查找标志独立文件开始的关键词,找到第二个关键词后,将关键词前面的部分剪切到指定的文件中,并以要求的文件名保存,如此循环,直到整个文件被顺利拆分完毕。

在这个过程中需要作以下准备:1)需要拆分的文件中要有较为明显的独立文件分隔标记,通常系统导出的文件都有,比如“姓名”、“部门”等;2)需要拆分的文件要做好备份。

3 程序实现

3.1 批量合并

3.1.1 程序开头部分

程序开头部分用于做好各种准备,比如定义变量等,代码如下:

'此程序用于文件的批量合并

filedir = "C:\Users\admin\Desktop\工作总结\合并\" '指定文件存放路径

Application.ScreenUpdating = False '关闭屏幕刷新提高速度

Dim filenum As Integer '要合并的文件数

Dim a As Integer '定义数字变量

Dim FileName1 As String '合并后的文件名

Dim FileName2 As String '定义要合并的文件名变量

3.1.2 关键部分

本部分代码主要用于打开要合并的文件,并复制里面的全部内容,并粘贴到指定的文件中,下面仅给出关键代码,其他代码从略。

Do While a <= filenum

FileName2 = CStr(a) ".doc"

ChangeFileOpenDirectory filedir

Documents.Open FileName:= FileName2, ……'打开要合并的文件,代码略

Selection.WholeStory '全选

Selection.Copy '复制

ActiveDocument.Close '关闭文件

Documents.Open FileName:=FileName1, ……'打开合并后的文件,代码略

Selection.EndKey Unit:=wdStory '将光标移到文件尾部

Selection.TypeParagraph '插入新段落,避免合并混乱

Selection.PasteAndFormat (wdPasteDefault) '粘贴

ActiveDocument.Save '保存文件

ActiveDocument.Close '关闭文件

a = a 1 '变量加1

Loop '循环

3.2 批量拆分

批量拆分的过程相对要麻烦一些。

3.2.1 程序开头部分

程序开头部分代码如下:

'此程序用于文件的批量拆分

filedir = "C:\Users\admin\Desktop\工作总结\拆分\" '指定文件存放路径

Application.ScreenUpdating = False '关闭屏幕刷新提高速度

Dim a As Integer '定义数字变量

Dim FileName1 As String '要拆分的文件名

Dim FileName2 As String '定义拆分后的文件名变量

3.2.2 关键部分

本部分代码主要完成以下操作:1)打开要拆分的文件;2)查找文件分隔关键词,本例中将关键词定为“姓名:”;3)将关键词前面的部分剪切到指定的文件中,并保存。

ChangeFileOpenDirectory filedir

Documents.Open FileName:=FileName, ……'打开要拆分的文件

……

Do While a > 0 '开始循环

Selection.HomeKey Unit:=wdStory '将光标移到文件开头

Selection.Find.ClearFormatting '查找关键词

With Selection.Find

.Text = "姓名:"

……

End With

Selection.Find.Execute '第一次查找

Selection.Find.Execute '第二次查找

Selection.MoveUp Unit:=wdLine, Count:=1 '将光标向上移到标题位置

Selection.MoveUp Unit:=wdLine, Count:=1 '将光标再向上移

Selection.EndKey Unit:=wdLine '将光标移到行尾

If Selection.Find.Found = False Then '规定循环结束标志

a = a - 1

Selection.EndKey Unit:=wdStory

End If

Selection.HomeKey Unit:=wdStory, Extend:=wdExtend '从当前位置选到文件头

Selection.Cut '剪切

Documents.Add Template:="Normal", ……'建立新文件,代码略

Selection.Find.ClearFormatting '建立新文件

With Selection.Find '查找关键词确定新文件名

.Text = "姓名:"

……

End With

……

ActiveDocument.SaveAs FileName:= FileName2,……

ActiveDocument.Save '保存文件

ActiveDocument.Close '关闭文件

……

Loop

4 结束语

以上代码都经过实际测试,在Word 2003和Word 2007上均可正常执行。实际测试发现,完

成一个文件的合并或拆分,只需要几秒钟,一小时可以完成近千个文件的合并或拆分,效率很高,而且不容易出错。

本系统是实现文件批量合并和拆分的最简单代码,如果要实现更丰富的功能和更人性化的界面,还要做一些改进,具体如下:

1)设计界面。以上代码虽然可以使用,但缺乏人性化,使用者需要对VBA有一定的了解才能正常使用,对于普通人来说很难使用,设计一个友好的用户界面,把不同的功能设计成专门的按钮,可以提高程序的易用性。

2)制作工具栏。工具栏是Word使用者经常用到的部分,为了使程序使用起来更加方便,可以将程序制作成工具栏,集成到Word中,与Word融为一体,用户使用起来会感觉得心应手。

参考文献:

[1] 刘贵伟,廉锁原,彭彩红.利用Word VBA程序快速自动编排离子反应方程式[J].辽宁师范大学学报:自然科学版,2008,31(4):439-442.

[2] 耿霞,谢延红,宋小悦,等.基于Word VBA技术的试卷自动排版系统的实现[J].甘肃联合大学学报:自然科学版,2007,21(3):69-72.

[3] 王殿佑.Word VBA应用程序在处理文档未知重复内容中的应用[J].电脑编程技巧与维护,2010(2):19-20.

[4] 杨晓亮.Word VBA高效编排范例应用[M].北京:中国青年出版社,2005.

本文来源于https://www.doczj.com/doc/1b7081181.html,(论文网) 原文链接:https://www.doczj.com/doc/1b7081181.html,/ligong/jisuanji/042Q392442011_2.html

相关主题
文本预览
相关文档 最新文档