标签:VBA,Office整合应用
这是在网上收集到的一个示例,可以使用Excel工作表数据自动生成多个Word文档邮件。
这个示例由同一个文件夹中的两个文档组成。一个是Excel工作簿,其中的工作表中数据就是要填入Word文档中的数据;一个是Word文档,一个模板,其中的内容就是邮件的主要内容,有多个空白域,用来填充来自Excel工作表中的数据。
在Excel工作表中有多少行数据,就会生成多少个Word文档。
VBA程序代码如下:
代码语言:javascript复制Sub fillwordform()
Dim appword As Object
Dim Doc As Object
Dim Path As String
Dim lngRow As Long
Dim lngCount As Long
' 修改为你的文件所在的实际路径
Path = "C:UsersexcelperfectDesktopGenerate Letter.docx"
Set appword = CreateObject("Word.Application")
For lngRow = 2 To Sheets("Record Set").Cells(Rows.Count, 1).End(xlUp).Row
Set Doc = appword.Documents.Open(Path, , True)
With Doc
.FormFields("strName").Result = Sheets("Record Set").Cells(lngRow, 4).Value
.FormFields("strName1").Result = Sheets("Record Set").Cells(lngRow, 4).Value
.FormFields("strAddress1").Result = Sheets("Record Set").Cells(lngRow, 5).Value
.FormFields("strAddress2").Result = Sheets("Record Set").Cells(lngRow, 6).Value
.FormFields("strAddress3").Result = Sheets("Record Set").Cells(lngRow, 7).Value
.FormFields("strAddress4").Result = Sheets("Record Set").Cells(lngRow, 8).Value
.FormFields("strAddress5").Result = Sheets("Record Set").Cells(lngRow, 9).Value
.FormFields("strMake").Result = Sheets("Record Set").Cells(lngRow, 1).Value
.FormFields("strModel").Result = Sheets("Record Set").Cells(lngRow, 2).Value
.FormFields("strMake1").Result = Sheets("Record Set").Cells(lngRow, 1).Value
.FormFields("strModel1").Result = Sheets("Record Set").Cells(lngRow, 2).Value
.FormFields("strDescription").Result = Sheets("Record Set").Cells(lngRow, 3).Value
End With
lngCount = lngCount 1
' 修改为你的文件所在的实际路径
Doc.SaveAs "C:UsersexcelperfectDesktoppTest" & lngCount & ".docx"
Doc.Close
Next lngRow
Set Doc = Nothing
Set appword = Nothing
End Sub
有兴趣的朋友,可以在完美Excel微信公众号中发送消息:
Excel自动生成多个Word文档
获取示例下载链接。
或者,直接到知识星球App完美Excel社群下载该示例文档。
你可以将其作为模板,将Excel工作表和Word文档按照你的内容进行修改后使用。