楼主 kevinchengcw |
Q: 如何用vba代码利用模板生成不同数据内容的多个word文档? A: 代码如下:
- Sub test()
- Dim Arr, N&, I&
- Arr = Worksheets("sheet1").[a1].CurrentRegion.Value '取得数据源的数据放入数组中
- With CreateObject("word.application") '创建word进程
- .Visible = False '隐藏执行进程
- .documents.Open ThisWorkbook.Path & "\template.doc" '打开模板文件
- With .activedocument.tables(1) '对表格一进行操作
- For N = LBound(Arr) + 1 To UBound(Arr) '循环数据区,将数据写入word文档表格对应的对应单元格内(注意:word vba中引用单元格用cell,有别于excel中的cells)
- .cell(1, 1).Range.Text = Arr(1, 2) & ":" & Arr(N, 2)
- .cell(1, 2).Range.Text = Arr(1, 3) & ":" & Arr(N, 3)
- .cell(1, 3).Range.Text = Arr(1, 4) & ":" & Format(Arr(N, 4), "yyyy-m-d")
- .cell(2, 2).Range.Text = Arr(N, 5)
- .cell(3, 2).Range.Text = Arr(N, 6)
- .cell(6, 2).Range.Text = Arr(N, 7)
- .cell(8, 1).Range.Text = Arr(N, 8)
- .cell(8, 2).Range.Text = Arr(N, 9)
- .cell(8, 3).Range.Text = Arr(N, 10)
- .cell(8, 4).Range.Text = Arr(N, 11)
- .cell(8, 5).Range.Text = Arr(N, 12)
- .cell(8, 6).Range.Text = Arr(N, 13)
- .cell(8, 7).Range.Text = Arr(N, 14)
- .cell(8, 8).Range.Text = Arr(N, 15)
- .cell(8, 9).Range.Text = Arr(N, 16)
- .cell(9, 1).Range.Text = Arr(1, 17) & ":" & Arr(N, 17)
- .cell(9, 2).Range.Text = Arr(1, 18) & ":" & Arr(N, 18)
- .cell(9, 3).Range.Text = Arr(1, 19) & ":" & Arr(N, 19)
- .Parent.SaveAs ThisWorkbook.Path & "\" & Arr(N, 1) & ".doc" '通过另存为命令生成数据区里指定的表名
- Next N
- End With
- .activedocument.Close False '关闭最后的活动文档
- .Quit '退出word进程
- End With
- End Sub
详见附件及素材源帖. 求助.rar |