用vba甚至不用管word的range就轻松搞定
将excel和word的模板放在同一个目录,以后按姓名生成不同的word文档
在excel那个工作表空的地方建个按钮控件,其脚本如下
Sub 按钮1_单击()
s_name = ActiveWorkbook.Name
s_name1 = ActiveSheet.Name
s_path = ThisWorkbook.Path
ls_01 = "word模板名"
Set objWordApp = CreateObject("Word.Application")
objWordApp.Visible = True
With Workbooks(s_name).Sheets(s_name1)
ln_02 = .Cells(1, 1).CurrentRegion.Rows.Count
for i=3 to ln_02
Set objDocument = objWordApp.Documents.Open(s_path + "\" + ls_01 + ".doc")
ls_02=.Cells( i,2).Value
objWordApp.Select
objWordApp.selection.MoveUp unit:=wdParagraph, count:=1, extend:=wdMove
rem 以上移动光标到开头
rem 以下填写每张通知的每一项,这里仅以填写编码为例
objWordApp.Selection.MoveDown Unit:=wdLine, Count:=2
rem 以上移动光标到第2行
objWordApp.Selection.MoveRight Unit:=wdCharacter, Count:=13
rem 以上移动光标到第13列
ln_03=lenb(trim(ls_02))
objWordApp.Selection.TypeText Text:=ls_02
rem 以上填写编码
objWordApp.Selection.Delete Unit:=wdCharacter, Count:=ln_03
rem 以上删除编码相同长度的空格
rem ''''''''''把各个要填的对应写好,缺点是行列要自己查
rem 以上填写每张通知的每一项,这里仅以填写编码为例
ls_02=.Cells( i,3).Value
objDocument.SaveAs Filename:=s_path + "\" + ls_02 + ".doc"
rem 以上以姓名保存word
objDocument.close
rem 以上关闭word
next
End With
End Sub
晕,所谓的word模板不是让你做dot,就是做一个设计好的空的doc文档。vba都写好了。按着查一下有几个地方要添加就好了,上面只写了填编码的。其实就是移动光标到哪行哪列,然后填写项目,然后删除对应多的空格。每一项都4步。