|
|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
为什么已经有
With .Documents.Open(sPath & "2017年模板.docx")
。。。
end with
却提示成员不存在,我估计是因为另存为以后激活文件定在另存为的文件了,另存为的文件中是没有书签的,但是with 和 end with 中的语句不是应该是默认激活“2017年模板”吗。应该怎么做,求助大神
Sub 根据Excel信息批量生成对应的Word方案()
Dim sPath As String '文档路径
Dim ArrPos() '记录位置对应关系的数组
Dim Arr '存储花名册信息的数组
Dim i, j As Integer '循环变量
sPath = ThisWorkbook.Path & "\" '记录Excel文件路径
ArrPos = [{2,1;4,2;6,3;8,4;10,5;12,6}] '记录Excel表格列次与Word表格位置的对应关系
With CreateObject("Word.Application") '创建Word程序对象
With .Documents.Open(sPath & "2017年模板.docx") '打开模板文档
Arr = Sheets("sheet2").Range("A1").CurrentRegion.Value '读取花名册信息
Application.DisplayAlerts = False '禁止显示提示和警告消息
For i = 2 To UBound(Arr) '循环花名册信息数组
.Bookmarks("工程名称1").Range.Text = Arr(i, 1)
.Bookmarks("工程名称2").Range.Text = Arr(i, 1)
.Bookmarks("方案编号").Range.Text = Arr(i, 7)
' .Range(20, 24).Text = Left(Arr(i, 21) & " ", 4) '在Word模板文档第2段写入年份
With .tables(1) '引用文档中的表格
For j = 1 To UBound(ArrPos) '循环对应关系数组
.Range.Cells(ArrPos(j, 1)).Range.Text = Arr(i, ArrPos(j, 2)) '将数组相应信息根据对应关系填入Word表格
Next j
End With
.SaveAs sPath & Arr(i, 1) & ".doc" '按姓名另存当前文档
Next i
Application.DisplayAlerts = True '允许显示提示和警告消息
.Close -1 '关闭并保存最后一个文档
End With
.Quit '退出Word程序
End With
MsgBox "生成完毕!", vbInformation, "xqoa" '结束消息提示
End Sub
|
|