前面和小伙伴们分享了,用office软件自带的邮件合并功能来进行Word与Excel交互,这个邮件合并生成的只有一个Word文档,要想生成一个一个Word文档,就需要用VBA

邮件合并-忍者档案

3385a5784d079e81d338a7e19b5d0986.png

0d5c76d9b6b61b0ead933d387f7e7f89.png

今天,就和小伙伴们分享用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

22125bd1952950fb39957219b92f6bc8.png

还有,看完不点个赞再走吗?点下下面右下角的小花呀

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐