兼并具有文本框的Word文档:VBA代码批量操作
本文介绍根据VBA言语,对很多含有图片、文本框与表格的Word文档加以批量主动兼并,并在每一次兼并时增加分页符的办法。
在咱们之前的文章中,介绍过根据Python言语的python-docx
(docx
)模块与docxcompose
模块,对很多Word文档加以兼并的办法;可是,根据这种办法,咱们无法对具有非清晰巨细的文本框的Word加以兼并,由于python-docx
无法处理含有这种元素的Word文件。最近,一位老哥提出了兼并含有文本框的Word的需求,所以就尝试用VBA来完结这一操作,这儿就介绍一下详细的办法。
其间,VBA是Visual Basic for Applications的缩写,其是根据Visual Basic言语的一种扩展,首要应用于微软Office套件中各种应用程序,例如Word、Excel与PowerPoint等;其答应用户创立自定义的宏和应用程序来主动履行各种使命,然后进步工作效率。现在,VBA首要便是应用于需求批量操作Office文件的各类场景中。
本文的需求如下。现在有一个文件夹,其间包括很多文档文件,如下图所示;其间,每一个文档中,都包括图片、表格、文本框等较为杂乱的元素。
咱们现在期望,能够批量将文件夹中很多文档文件加以兼并;并且在兼并时,每次都需求在新的1
页中兼并下一个文件(也便是,不同文件的内容不要出现在1
页中)。
清晰了需求,即可开端代码编撰。本文所需代码如下。
Sub merge_word()
Dim time_start As Single: time_start = Timer
Dim word_result As Document
Dim word_temp As Document
Dim file_dialog As FileDialog
Dim str As String
Dim file
Dim num As Long
Set word_result = ActiveDocument
Set file_dialog = Application.FileDialog(msoFileDialogFilePicker)
With file_dialog
.AllowMultiSelect = True
.Title = "请挑选【一个或多个】需求与当时文档兼并的文件"
With .Filters
.Clear
.Add "Word文件", "*.doc*;*.dot*;*.wps"
.Add "一切文件", "*.*"
End With
If .Show Then
Application.ScreenUpdating = False
num = .SelectedItems.count
For Each file In .SelectedItems
Set word_temp = Documents.Open(file)
word_temp.Range.Copy
word_result.Range(word_result.Range.End - 1, word_result.Range.End).Select
DoEvents
Selection.Paste
Selection.InsertBreak
word_temp.Close wdDoNotSaveChanges
Next
Application.ScreenUpdating = True
End If
End With
Set word_result = Nothing
Set word_temp = Nothing
Set file_dialog = Nothing
str = Format(Timer - time_start, "均已成功兼并;共用时0秒!")
str = Format(num, "您挑选兼并0个文件,") & str
MsgBox str, vbInformation, "文件兼并成果"
End Sub
上述代码中,咱们首要进行变量声明。time_start
是一个Single
类型的变量,用以记载代码开端履行的时刻;Timer
函数回来一个单精度浮点数,表明从核算机发动到现在经过的秒数。word_result
是一个Document
类型的变量,用以存储当时翻开的Word文档。word_temp
是另一个Document
类型的变量,用以暂时存储要兼并的其他Word文档。file_dialog
是一个FileDialog
类型的变量,用以存储文件挑选对话框方针。str
是一个字符串类型的变量,用以存储终究要显现在音讯框中的兼并成果信息。file
用以在循环中存储用户挑选的每个文件途径。num
是一个长整型变量,用以存储用户挑选的文件数量。
随后,咱们获取当时文档。将当时正在修改的Word文档赋值给word_result
变量,这个文档便是要兼并其他文档内容的成果文档。
接下来,咱们翻开文件挑选对话框。创立一个文件挑选对话框方针,并逐个设置对话框的特点;其间,答应用户挑选多个文件,自定义对话框标题,并设置文件类型过滤器,其间第一个表明只显现Word文档文件,第二个则表明显现一切类型的文件。
紧接着,经过If .Show Then
句子,判别用户在对话框中是否挑选了文件。假如是的话,履行兼并操作。其间,首要获取用户挑选的文件数量;随后,循环遍历每个挑选的文件——翻开每个挑选的文件作为暂时文档,将暂时文档的全部内容仿制到剪贴板;将光标定位到方针文档(也便是成果文件)的最终一个字符处,并将剪贴板中的内容张贴到方针文档的结尾,一起在张贴的内容后刺进一个分页符;最终,封闭暂时文档而不保存更改。接下来,进行下一次遍历。其间需求留意,这儿假如咱们不增加DoEvents
这句代码,会导致其下方的Selection.Paste
这句代码报错(虽然会报错,但其实挑选调试后持续按下F5
,程序也仍是能够运转)。
最终,即可整理变量引证,并核算兼并操作的耗时,将成果信息显现在音讯框中。
代码的履行办法如下。首要,在恣意途径创立一个空白的Word文档,作为咱们的成果文件。随后,在这个文档中,一起按下Alt
键与F11
键,进入VBA宏界面,如下图所示。
随后,在左上角的Normal处右键,挑选“刺进”→“模块”,如下图所示。
随后,在弹出的窗口中,仿制前述代码,如下图所示。
接下来,按下F5
键,即可开端运转代码。其间,首要弹出一个挑选文件的窗口,咱们挑选待兼并的文件即可;如下图所示。
随后,点击“确认”,即可开端兼并文件。稍等片刻,兼并完结,并将弹出如下所示界面。
此刻,回到咱们翻开的Word文件中,即可看到文件现已被兼并在内了。
其间,上图中紫色框所示区域,便是我这儿待兼并文件的最初部分(紫色框内赤色的两段线只是是为了遮挡文件中的部分信息,没有其他意义,咱们了解即可)——能够看到,每一次新的文件兼并时,都是在新的一页操作的,契合咱们的需求。
至此,功德圆满。