Word文档批量替换工具

作者:iamlaosong

日常工作中可能会碰到这样的情况,就是需要批量替换一些文件的内容,如合同、产品说明、ISO认证标准化文档(质量手册、程序文件、管理手册)、项目推广方案等,先做批量替换,再进行修改,可以节省大量时间。

本工具可以实现一键完成批量替换,只需按键前将要替换的内容输入表格当中。工具用VBA实现,主要是针对ISO认证标准化文档做的,即对多个文件做同样的替换。界面如下:

功能简单,实现起来也容易。也就是读取表格内容到数组,选择要替换的文件,然后逐个替换即可。

1、文件夹替换:点击按钮选择一个文件夹,工具对文件夹下所有Word文档进行替换,替换后的文件保留在当前文件夹下新建的new文件夹下,文件名和源文件相同。

2、文件替换:点击按钮后选择一个或多个Word文档,工具对对选中的文档进行替换,替换后的文件保留在当前文件夹下新建的new文件夹下,文件名和源文件相同。

本来想用Excel VBA做的(毕竟这个我比较熟),可是Excel VBA代码写完后,打开Word文档没问题,其他代码执行没问题,就是替换功能那部分代码执行了完不成替换,而同样的代码在Word VBA中却可以实现所需的功能,不知道问题出在哪儿。

核心代码如下:

1、读取表格内容:

    '读取替换内容
    For k = 2 To 100
       tmp = ActiveDocument.Tables(1).Cell(k, 1)
       sFind(k) = Left(tmp, Len(tmp) - 2)
       tmp = ActiveDocument.Tables(1).Cell(k, 2)
       sRepl(k) = Left(tmp, Len(tmp) - 2)
       If sFind(k) = "" Then Exit For
    Next k
    WordNo = k - 1

2、批量替换

    If Dir(sPath & "\new", vbDirectory) = "" Then MkDir sPath & "\new"
    '开始替换
    For kk = 1 To FileNo
        Target = sPath & "\" & myFile(kk)
        Debug.Print Target
        Documents.Open Target
            
        For k = 2 To WordNo
            Selection.Find.ClearFormatting
            Selection.Find.Replacement.ClearFormatting
            With Selection.Find
                .Text = sFind(k)
                .Replacement.Text = sRepl(k)
                .Forward = True
                .Wrap = wdFindContinue
                .Format = False
                .MatchCase = False
                .MatchWholeWord = False
                .MatchByte = True
                .MatchWildcards = False
                .MatchSoundsLike = False
                .MatchAllWordForms = False
                '执行替换
                .Execute Replace:=wdReplaceAll
            End With
        Next k
        ActiveDocument.SaveAs2 FileName:=sPath & "\new\" & myFile(kk)
        'ActiveDocument.Save
        ActiveDocument.Close
    Next kk
    
    MsgBox "共有" & FileNo & "个文件替换完毕!"

感兴趣朋友可以下载试试:Word文档批量替换工具.doc

猜你喜欢

转载自blog.csdn.net/iamlaosong/article/details/94383566
今日推荐