excel 宏编辑,批量复制表单文件

原理 

获取单元格变量,然后复制文件A到B的同时重命名

原理:

A-mode.docx

里面有很多表格内容,如日期,名字,年月日,这些内容的数据都存储在Excel表中,可以使用Mail Merge 功能进行生成,但是Mail Merge 功能局限性比较大,比如说

./ok/ 

B-Xiaoming_ID_00123.docx

B-XiaoKing_ID_00124.docx

B-lizing_ID_00128.docx

B-Huanming_ID_00982.docx

形象一点:一个表单一个word 文档

 

因此可以通过以下代码实现

 

Sub bath_writing_sc()

Dim i As Integer
Dim ID, ENname, CNname, Month, Day, FullPath As String

Set docApp = CreateObject("Word.Application")

For i = 2 To Worksheets(1).UsedRange.Rows.Count
ID = Worksheets(1).Cells(i, 2).Value
ENname = Worksheets(1).Cells(i, 3).Value
CNname = Worksheets(1).Cells(i, 4).Value
Month = Worksheets(1).Cells(i, 5).Value
Day = Worksheets(1).Cells(i, 6).Value
FullPath = Worksheets(1).Cells(i, 8).Value


FileCopy ThisWorkbook.Path & "\Model.docx", ThisWorkbook.Path & "\ok\" & FullPath & ".docx"


Set wd = docApp.documents.Open(ThisWorkbook.Path & "\ok\" & FullPath & ".docx")
    docApp.Visible = False
    'docApp.Activate     '让打开后的文件显示在桌面(成为当前活动文档)
 
        Set myRange = wd.Content
         myRange.Find.Execute findtext:="#Name#", replacewith:=ENname, Replace:=2
         myRange.Find.Execute findtext:="#ID#", replacewith:=ID, Replace:=2
         myRange.Find.Execute findtext:="#Day#", replacewith:=Day, Replace:=2
         myRange.Find.Execute findtext:="#Month#", replacewith:=Month, Replace:=2
wd.Save
     
Next

docApp.Quit
MsgBox "Mission Completed"
End Sub

  

posted @ 2021-07-14 16:07  千家诗  阅读(565)  评论(0编辑  收藏  举报