前面和小伙伴们分享了,用office软件自带的邮件合并功能来进行Word与Excel交互,这个邮件合并生成的只有一个Word文档,要想生成一个一个Word文档,就需要用VBA
邮件合并-忍者档案
今天,就和小伙伴们分享用VBA来生成一个一个Word文件
代码如下
小伙伴们来看第4行的代码,在Excel要使用Word对象需要用createobject函数创建一个Word对象,这个就是你启动Word软件的意思
和创建字典对象的写法一样
第7行的代码,咱们去循环每一行的信息,每循环一次,就打开当前文件夹下面的火影忍者.docx文档,这是模板文档,提供模板文档,然后写入到模板文档,会比用代码创建文档方便
word.tables(1)表示打开的Word文档中的第一个表格
Word文档的表格单元格VBA用cell表示,而Excel的单元格vba用cells,这2个有区别,需要特别注意
第9行-第19行的代码是依次对打开的Word文档的第一个表格中的单元格进行赋值
第20行的代码判断电脑中是否有这个图片,如果有这个图片,则插入到Word文档中第1行第5列单元格中
第21行的代码是Word中插入图片的方法
第23行的代码是用名字命名另存到当前文件夹下面
第24行的代码关闭刚刚这个打开又另存为的Word文档
Sub main()Dim wordDim appSet app = CreateObject("Word.Application")Dim arrarr = Range("a1").CurrentRegionFor i = 2 To UBound(arr) Set word = app.documents.Open(ThisWorkbook.Path & Application.PathSeparator & "火影忍者.docx") word.tables(1).Cell(1, 2).Range.Text = arr(i, 2) word.tables(1).Cell(1, 4).Range.Text = arr(i, 3) word.tables(1).Cell(2, 2).Range.Text = arr(i, 1) word.tables(1).Cell(2, 4).Range.Text = arr(i, 4) word.tables(1).Cell(3, 2).Range.Text = arr(i, 5) word.tables(1).Cell(3, 4).Range.Text = arr(i, 6) word.tables(1).Cell(5, 1).Range.Text = arr(i, 7) word.tables(1).Cell(5, 2).Range.Text = arr(i, 8) word.tables(1).Cell(5, 3).Range.Text = arr(i, 9) word.tables(1).Cell(5, 4).Range.Text = arr(i, 10) word.tables(1).Cell(5, 5).Range.Text = arr(i, 11) If Dir(arr(i, 12)) <> "" Then word.tables(1).Cell(1, 5).Range.InlineShapes.AddPicture arr(i, 12), False, True End If word.SaveAs ThisWorkbook.Path & Application.PathSeparator & arr(i, 2) & ".docx" word.CloseNext iEnd Sub
还有,看完不点个赞再走吗?点下下面右下角的小花呀