1、VBA 在 EXCEL 中操作 WORD 表格之七 第 1 页 共 7 页把 EXCEL 工作表数据用 VBA 写入 WORD 文档编辑:madmlwt1逐个单元格数据写入 WORD 表格【问题要求】新建“工程订单.doc ”,保存到当前操作的 EXCEL 文件位置。新建“工程订单.doc ”文档中,第一段落写入“工程订单” ,第二段落写入“单位:新建装饰有限公司” ,第三段落插入一个与当前工作表中数据行列数完全相同的表格。把当前工作表中数据(包括标题行)按单元格读取方式逐个写入 WORD 表格中。格式设置第一段落黑体、18 号、水平居中;第二段落宋体、14 号、水平居中;表格在页面中水平居中
2、;表格数据宋体、10 号、左对齐;标题行加粗、水平居中。【代码】Sub EXCEL 保存为 WORD 表格数据()Application.ScreenUpdating = False 关闭屏幕刷新开始时间 = Timer 程序运行开始时间(秒)hs = ActiveSheet.UsedRange.Rows.Count 当前工作表数据行数ls = ActiveSheet.UsedRange.Columns.Count 当前工作表数据列数wjM = “工程订单“myFile = ActiveWorkbook.Path & “ & wjM & “.doc“ 保存的文件及路径On Error Resu
3、me Next 出现错误跳到下一行Kill myFile 删除文件VBA 在 EXCEL 中操作 WORD 表格之七 第 2 页 共 7 页On Error GoTo 0 不进行错误处理Set wd = CreateObject(“Word.Application“) 定义一个 Word 对象变量With wd.Documents.Add 创建一个新的 Word 文档With .ActiveDocument.Paragraphs(1).Range 当前活动文档中.InsertParagraphBefore 在指定的所选内容或区域前插入一个新段落.InsertBefore “工程订单“ 写入新段
4、落内容.Font.Name = “黑体“ 字体.Font.Size = 18 字号.ParagraphFormat.Alignment = 1 水平居中End WithWith .ActiveDocument.Paragraphs(2).Range.InsertAfter “单位:新建装饰有限公司“.Font.Name = “华文新魏“.Font.Size = 14.ParagraphFormat.Alignment = 1End With.ActiveDocument.Paragraphs(2).Range.InsertParagraphAfter 在第二段后面插入一个新的段落.Active
5、Document.Paragraphs(3).Range.Select 选中第三段落.ActiveDocument.Tables.Add Range:=.Selection.Range, NumRows:=hs, NumColumns:=ls 插入 hs 行 ls 列表格With .ActiveDocument.Tables(1) WORD 表格For h = 1 To hs 从第一行循环到 hs 行For l = 1 To ls 从第 1 列循环到 ls 列.Cell(h, l).Range = ActiveSheet.Cells(h, l) 把当前工作表VBA 在 EXCEL 中操作 WO
6、RD 表格之七 第 3 页 共 7 页单元格数据写入 WORD 表格With .Cell(h, l).Range 单元格字体设置.Font.Name = “宋体“ 字体.Font.Size = 10 字号.Font.Bold = True 加粗If h 1 Then .Font.Bold = False 如果表格行不是第一行则字形不加粗End WithNext lNext hEnd With.Selection.Tables(1).AutoFitBehavior (1) 根据内容自动调整表格.Selection.Tables(1).Rows(1).HeadingFormat = 9999998
7、 标题行重复.ActiveDocument.Tables(1).Rows.Alignment = 1 表格水平居中.Selection.Tables(1).Range.ParagraphFormat.Alignment = 3 所有行数据左对齐.Selection.Tables(1).Rows(1).Range.ParagraphFormat.Alignment = 1 标题行居中.ActiveDocument.SaveAs myFile 保存新建 Word 文档.Quit 关闭新建文档窗口End WithSet wd = NothingMsgBox Chr(10) & “成功创建一个 WOR
8、D 表格 “ & wjM _& Chr(10) & Chr(10) & “共用时 “ & Timer - 开始时间 & “ 秒“, , “Exc_To_Word“Application.ScreenUpdating = False 关闭屏幕刷新End SubVBA 在 EXCEL 中操作 WORD 表格之七 第 4 页 共 7 页说明:逐个单元格数据写入 WORD 表格,就是工作表中的数据单元格,对应已经创建的 WORD 表格单元格,逐个写入数据,这是 EXCEL 数据保存为 WORD表格最基本、常规的操作方法。把 EXCEL 数据保存为 WORD 表格数据,基本思路就是先写入数据再设置格式。
9、上面代码在逐个单元格写入数据过程中,对单元格进行了字体格式设置,如果是庞大数据的写入,可能会降低写入速度。所以最好是把数据完全写入后对表格整体进行所有格式设置。2当前工作表数据复制到 WORD 文档【问题要求】把被操作的 EXCEL 当前工作表数据复制粘贴到新建的 WORD 文档。新建WORD 文档“ 清单.doc ”,与被操作的 EXCEL 文件保存在相同位置。新建 WORD 文档格式:第一段落为表格总标题名“复制 EXCEL 数据粘贴到新建 WORD 文档”、第二段落为作者或者单位名称“作者:老顽童” 、第三段落粘贴复制的 EXCEL 数据表格。第一段落黑体、18 号、加粗、居中。第二段落
10、华文新魏、14 号、居中。表格数据标题行宋体、12 号、加粗。表格在页面中水平居中、表格跨页则标题行重复、表格根据内容自动调整列宽。【代码】Sub excel 数据复制粘贴到 word()Application.ScreenUpdating = False 关闭屏幕刷新qsT = Timer 开始时间ActiveSheet.UsedRange.Copy 复制已经使用的数据区域wjM = “清单“ 文件名称VBA 在 EXCEL 中操作 WORD 表格之七 第 5 页 共 7 页myFile = ThisWorkbook.Path & “ & wjM & “.doc“ 保存的文件及路径On Er
11、ror Resume Next 出现错误跳到下一行Kill myFile 删除文件On Error GoTo 0 不进行错误处理Set wd = CreateObject(“word.application“) 创建 WORD 对象wd.Documents.Add.SaveAs Filename:=myFile 新建一个 WORD 文件并保存With wd.ActiveDocument.Paragraphs(1).Range 当前活动文档中第一段.InsertParagraphBefore 左边(或前)插入一个新段落.InsertBefore “复制 EXCEL 数据粘贴到新建 WORD 文档
12、“ 写入新段落内容End Withwd.ActiveDocument.Paragraphs(1).Range.InsertAfter “作者:老顽童“ 第一段右边插入新段落wd.ActiveDocument.Paragraphs(2).Range.InsertParagraphAfter 在第二段后面插入一个新的段落wd.ActiveDocument.Paragraphs(3).Range.Select 选中第三段落wd.Selection.PasteExcelTable False, True, False 粘贴复制的 EXCEL 表格With wd.ActiveDocument.Parag
13、raphs(1).Range 第一段文本格式设置.ParagraphFormat.Alignment = 1 水平居中.Font.Size = 18 字号.Font.Name = “黑体 “ 字体.Font.Bold = True 加粗End WithWith wd.ActiveDocument.Paragraphs(2).Range 第二段文本格式设置.ParagraphFormat.Alignment = 1.Font.Size = 14.Font.Name = “华文新魏 “VBA 在 EXCEL 中操作 WORD 表格之七 第 6 页 共 7 页End WithWith wd.Sele
14、ction.Tables(1).AutoFitBehavior (1) 根据内容调整表格列宽.Rows(1).HeadingFormat = 9999998 标题行重复.Rows.Alignment = 1 表格水平居中With .Rows(1).Range.Font.Size = 12 字号.Font.Name = “宋体“ 字体.Font.Bold = True 加粗End WithEnd Withwd.ActiveDocument.Save 保存修改wd.ActiveDocument.Close 关闭文档wd.Quit 关闭 WORD 程序Set myRange = Nothing 释放
15、内存Set adoc = Nothing 释放内存Set wd = Nothing 释放内存Application.CutCopyMode = False 撤销复制状态MsgBox Chr(10) & “成功地把当前 EXCEL 数据复制粘贴到 WORD 文档“ _& Chr(10) & Chr(10) & “共计用去时间 “ & Timer - qsT & “ 秒“, , “excel 数据复制粘贴到 word“Application.ScreenUpdating = False 关闭屏幕刷新End Sub说明:把 EXCEL 数据保存为 WORD 表格,方法多样。这里尝试了二种方法,一是按单元格逐个读写、二是把整个 EXCEL 数据表格复制粘贴到新建的 WORDVBA 在 EXCEL 中操作 WORD 表格之七 第 7 页 共 7 页文档。总的来说,第一种方法速度最慢,但却是 EXCEL 数据写入 WORD 的最基本方法。下一篇,我们将会尝试把 EXCEL 数据保存为 WORD 表格的第三种方法先把工作表数据逐行写入 WORD 文档后再将其转换成表格。此法对于大数据量的 EXCEL 数据写入 WORD 文档,不失为一种行之有效的快速之法!