|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
将Excel数据写入Word模板时存在2个问题?????
1、当EXCEL某行数据需要重复引用时,自动错误读取下一行对应列数据。
2、当EXCEL某单元格数据为函数公式产生时,word无法读取该单元格对应列数据。
附本论坛高手的VBA代码:
Dim Str1, Str2
当前路径 = ThisWorkbook.Path
最后行号 = Sheets("信息").Range("B65536").End(xlUp).Row
判断 = 0
导出文件名 = "公文.doc"
导出路径文件名 = 当前路径 & "\" & 导出文件名
FileCopy 当前路径 & "\公文(模板).doc", 导出路径文件名
With Word对象
.Documents.Open 导出路径文件名
.Visible = False
' .ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader '设置位置在页眉
' Str1 = "数据006"
' Str2 = Sheets("信息").Cells(2, 2)
' .Selection.HomeKey Unit:=wdStory '光标置于文件首
' If .Selection.Find.Execute(Str1) Then '查找到指定字符串
' .Selection.Font.Color = wdColorAutomatic '字符为自动颜色
' .Selection.Text = Str2 '替换字符串
' End If
' .ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter '设置位置在页脚
' Str1 = "数据007"
' Str2 = Sheets("信息").Cells(2, 1)
' .Selection.HomeKey Unit:=wdStory '光标置于文件首
' If .Selection.Find.Execute(Str1) Then '查找到指定字符串
' .Selection.Font.Color = wdColorAutomatic '字符为自动颜色
' .Selection.Text = Str2 '替换字符串
' End If
.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument '设置位置在正文
.Selection.WholeStory '全选
.Selection.Copy '复制
If 最后行号 > 3 Then
For i = 2 To 最后行号 - 1 '复制页
.Selection.EndKey Unit:=wdStory '光标置于文件尾
.Selection.InsertBreak Type:=wdPageBreak '分页
.Selection.PasteAndFormat (wdPasteDefault) '粘贴
Next i
End If
For i = 4 To 最后行号
For j = 1 To 38 '填写文字数据
Str1 = "数据" & Format(j, "000")
Str2 = Sheets("信息").Cells(i, j + 1)
.Selection.HomeKey Unit:=wdStory '光标置于文件首
If .Selection.Find.Execute(Str1) Then
.Selection.Font.Color = wdColorAutomatic
.Selection.Text = Str2
End If
Next j
' For j = 1 To 3 '填写表格数据
' .ActiveDocument.Tables(i - 1).Cell(2, j).Range = Sheets("WPS").Cells(i, j + 6)
' .ActiveDocument.Tables(i - 1).Cell(4, j).Range = Sheets("WPS").Cells(i, j + 9)
' Next j
Next i
End With
Word对象.Documents.Save
Word对象.Quit
Set Word对象 = Nothing
If 判断 = 0 Then
i = MsgBox("已生成“" & 导出路径文件名 & "”!", 0 + 48 + 256 + 0, "提示:")
End If
End Sub
|
|