本文介绍的技术需要先在Word文档中设置书签,Excel中的数据将会被放置在这个书签处。这是在Word中获取并放置Excel数据的一个基本技术,下面的示例展示了其运行原理,可供进一步拓展应用参考。
如下图1所示,在一个名为“excelandword02.docx”的Word文档中,在需要放置Excel数据的位置设置一个名为“SaleData”的书签。(在Word中,单击功能区“插入”选项卡“链接”组中的“书签”,在弹出的“书签”对话框中,输入书签名)
图1
关闭该Word文档。
下图2所示为要放置到Word文档中的工作表数据。
图2
在Excel工作簿中,打开VBE,单击菜单“工具——引用”,找到并选中“MicrosoftWord XX.0 Object Library”库前的复选框,如下图3所示。
图3
插入一个标准模块,输入下面的代码:
代码语言:javascript复制Sub InsertExcelDataInWord() Dim rng As Range Dim wd As Word.Application Dim wdDoc As Word.Document Dim wdRng As Word.Range '赋值数据区域 Set rng =Worksheets("Sheet1").Range("A1:C7") '复制数据 rng.Copy '打开Word文档 Set wd = New Word.Application Set wdDoc =wd.documents.Open(ThisWorkbook.Path & "excelandword02.docx") wd.Visible = True '设置目标书签 Set wdRng =wdDoc.bookmarks("SaleData").Range '如果有旧数据表则删除并粘贴新表 On Error Resume Next wdRng.Tables(1).Delete wdRng.Paste '调整表的列宽 wdRng.Tables(1).Columns.SetWidth (rng.Width/ rng.Columns.Count), wdAdjustSameWidth '重新插入书签 wdDoc.bookmarks.Add "SaleData",wdRng '保存并退出Word文档 wd.Quit SaveChanges:=True '释放对象变量 Set wdRng = Nothing Set wdDoc = Nothing Set wd = NothingEnd Sub
我们假设工作簿和Word文档在相同的文件夹。在代码中,我们删除了书签处原来可能存在的数据表,然后粘贴新的数据表,以避免原来已经存在数据表,再粘贴后数据重复。注意,粘贴数据表时,也会同时覆盖该位置的书签,因此,在后面我们又重新插入书签,以备下一次运行该程序更新数据时使用。
运行代码后的效果如下图4所示。
图4