当前位置:首页 > 操作系统 > 正文内容

兼并具有文本框的Word文档:VBA代码批量操作

邻居的猫1个月前 (12-09)操作系统1065

  本文介绍根据VBA言语,对很多含有图片、文本框与表格的Word文档加以批量主动兼并,并在每一次兼并时增加分页符的办法。

  在咱们之前的文章中,介绍过根据Python言语的python-docxdocx)模块与docxcompose模块,对很多Word文档加以兼并的办法;可是,根据这种办法,咱们无法对具有非清晰巨细的文本框Word加以兼并,由于python-docx无法处理含有这种元素的Word文件。最近,一位老哥提出了兼并含有文本框Word的需求,所以就尝试用VBA来完结这一操作,这儿就介绍一下详细的办法。

  其间,VBA是Visual Basic for Applications的缩写,其是根据Visual Basic言语的一种扩展,首要应用于微软Office套件中各种应用程序,例如WordExcelPowerPoint等;其答应用户创立自定义的宏和应用程序来主动履行各种使命,然后进步工作效率。现在,VBA首要便是应用于需求批量操作Office文件的各类场景中。

  本文的需求如下。现在有一个文件夹,其间包括很多文档文件,如下图所示;其间,每一个文档中,都包括图片、表格、文本框等较为杂乱的元素

image

  咱们现在期望,能够批量将文件夹中很多文档文件加以兼并;并且在兼并时,每次都需求在新的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文件中,即可看到文件现已被兼并在内了。

  其间,上图中紫色框所示区域,便是我这儿待兼并文件的最初部分(紫色框内赤色的两段线只是是为了遮挡文件中的部分信息,没有其他意义,咱们了解即可)——能够看到,每一次新的文件兼并时,都是在新的一页操作的,契合咱们的需求。

  至此,功德圆满。

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=595

分享给朋友:

“兼并具有文本框的Word文档:VBA代码批量操作” 的相关文章

将计算机参加和脱离域

将计算机参加和脱离域

一:将核算机参加域 给核算机配IP ip地址随意填,只要和dns在同一个网段就行 首选dns填dns1的地址,备用dns填dns2的地址 在这台电脑(此电脑)点击特点,这样能进入核算体系 点击更改设置,更改域 输入更改的域名 输入dns1域管理员的暗码 二:查验核算机参加域的状况 翻开dns...

痞子衡嵌入式:使用i.MXRT10xx系列内部DCP引擎核算CRC32值时需注意数据长度对齐

痞子衡嵌入式:使用i.MXRT10xx系列内部DCP引擎核算CRC32值时需注意数据长度对齐

  咱们好,我是痞子衡,是正派搞技能的痞子。今日痞子衡给咱们介绍的是运用i.MXRT10xx系列内部DCP引擎核算CRC32值时需注意数据长度对齐。   MCU 开发里常常需求 CRC 校验来查看数据完整性,CRC 校验既能够纯软件完成也能够凭借 MCU 片内外设硬件完成。大部分 MCU 里一般都会...

linux怎么运行程序,Linux系统下运行程序的详细指南

linux怎么运行程序,Linux系统下运行程序的详细指南

在Linux中运行程序通常有以下几种方法:1. 命令行运行: 打开终端(Terminal)。 输入程序的全路径或使用`cd`命令导航到程序所在的目录。 输入程序的名称并按回车键运行。 例如,如果你的程序是一个名为`example.py`的Python脚本,位于主目录下,你可以这...

linux配置nfs,Linux配置NFS服务概述

linux配置nfs,Linux配置NFS服务概述

Linux配置NFS(网络文件系统)通常包括以下几个步骤:1. 安装NFS服务:在大多数Linux发行版中,可以使用包管理器来安装NFS服务。例如,在Debian或Ubuntu中,可以使用`aptget`,在RedHat或CentOS中,可以使用`yum`。2. 配置NFS服务器:在`/etc/ex...

linux修改密码命令,跟老男孩学linux运维shell编程实战下载

在Linux系统中,你可以使用以下命令来修改密码:1. `passwd` 命令:这是最常用的修改密码的命令,用于修改当前用户的密码。你可以直接在终端中输入 `passwd` 命令,然后按照提示输入新密码。2. `passwd ` 命令:如果你是root用户,你可以使用这个命令来修改其他用户的密码。将...

单片机和嵌入式,嵌入式系统的基石

单片机和嵌入式,嵌入式系统的基石

单片机和嵌入式系统是电子工程和计算机科学中两个紧密相关的概念。它们在许多现代电子设备中扮演着核心角色,从简单的家电到复杂的工业控制系统。首先,我们来了解单片机(Microcontroller)的概念。单片机是一种集成电路,它将一个微处理器、内存、输入输出(I/O)端口和其他必要的外围设备集成在一个单...