电脑教程
位置:首页>> 电脑教程>> office教程>> 如何基于Excel数据创建Word文档?

如何基于Excel数据创建Word文档?

  发布时间:2022-09-04 08:24:55 

标签:excel使用技巧,excel入门教程,excel表格的公式,Excel教程

问:Excel擅长数据分析和处理,而Word擅长制作精美的报告。如果将两者结合起来,在Word中获取Excel数据来制作报表文档,那一定非常酷!通常,我们首先在Excel中分析和处理好数据,然后将结果导出到Word中,通过排版制作出一份有价值的精美文档。那么,如何使用VBA将Excel数据自动放置在Word文档中呢?

答:我们先谈谈实现思路,然后以不同情形下的实例来说明。

技术路线

1. 创建Word模板,用来作为数据分析结果的发布平台。在Word模板中,在每个插入点处定义书签。当然,对于只导入一两个数据表来说,这一步可选。

2. 使用VBA,将Excel中的数据复制到Word文档,从而形成一份报表文档。

示例1:将Excel数据区域自动复制到Word文档

如下图所示,需要将工作表Data中单元格区域A1:E8的数据自动导出到Word文档中。

如何基于Excel数据创建Word文档?

第1步:创建一份名为PasteTable.docx的Word文档,然后在想要粘贴数据的位置插入一个名为DataTable的书签。关闭该文档并将其与Excel文档放在相同的目录中。

第2步:在Excel VBE中,创建对MicrosoftWord Object Library的引用。

选择“工具——引用”,在引用对话框中,选择“Microsoft Word ×.0 Object Library”。

第3步:输入下面的代码

Sub PasteExcelTableIntoWord()

‘声明变量

Dim MyRange As Excel.Range

Dim wd As Word.Application

Dim wdDoc As Word.Document

Dim WdRange As Word.Range

‘复制区域

Set MyRange =Sheets(“Data”).Range(“A1:E8”)

MyRange.Copy

‘打开Word文档

Set wd = New Word.Application

Set wdDoc =wd.Documents.Open(ThisWorkbook.Path & “\PasteTable.docx”)

wd.Visible = True

‘将光标移至书签位置

Set WdRange =wdDoc.Bookmarks(“DataTable”).Range

‘删除旧表格粘贴新表格

On Error Resume Next

WdRange.Tables(1).Delete

WdRange.Paste

‘调整列宽

WdRange.Tables(1).Columns.SetWidth _

(MyRange.Width / MyRange.Columns.Count),wdAdjustSameWidth

‘重新插入书签

wdDoc.Bookmarks.Add “DataTable”,WdRange

‘内存清理

Set wd = Nothing

Set wdDoc = Nothing

Set WdRange = Nothing

End Sub

说明

1. 代码中设置要复制的区域时,使用了硬编码,我们可以根据实际进行调整。

2. 当复制Excel数据表到Word中时,表格太宽往往导致格式问题,代码中对表格列宽进行了调整。这是调整表格列宽的技巧,即每列的宽度设置为表格的总宽度除以表格列数。

3. 当粘贴数据到书签位置时,会覆盖书签。因此,代码重新创建书签,以确保下次运行代码时书签仍在。

示例2:将多个Excel数据区域复制到Word文档

有时,需要将多个数据区域复制到Word文档,并且这些数据区域大小不同。例如,在工作表Data中有两个大小不一的数据区域,要将这两个区域分别复制到同一个Word文档中形成报表文档。

如何基于Excel数据创建Word文档?

第1步:创建一份名为PasteTable.docx的Word文档,并在想要粘贴数据的位置分别插入名为DataTable1、DataTable2的书签。关闭该文档并将其与Excel文档放在相同的目录中。

第2步:将单元格区域A1:E8命名为“rang1”,单元格区域A11:F15命名为“rang2”。

第3步:在Excel VBE中,创建对MicrosoftWord Object Library的引用。

选择“工具——引用”,在引用对话框中,选择“Microsoft Word ×.0 Object Library”。

第4步:输入下面的代码

Sub PasteExcelTableIntoWord()

‘声明变量

Dim MyRange As Excel.Range

Dim wd As Word.Application

Dim wdDoc As Word.Document

Dim WdRange As Word.Range

Dim i As Long

‘打开Word文档

Set wd = New Word.Application

Set wdDoc =wd.Documents.Open(ThisWorkbook.Path & “\PasteTable.docx”)

wd.Visible = True

On Error Resume Next

For i = 1 To 2

Set MyRange = Names(“rang”& i).RefersToRange

MyRange.Copy

Set WdRange = wdDoc.Bookmarks(“DataTable”& i).Range

WdRange.Tables(1).Delete

WdRange.Paste

WdRange.Tables(1).Columns.SetWidth _

(450 / MyRange.Columns.Count),wdAdjustNone

wdDoc.Bookmarks.Add”DataTable” & i, WdRange

Next i

‘清空内存

Setwd = Nothing

Set wdDoc = Nothing

Set WdRange = Nothing

End Sub

说明

1. 此方法比较“笨”。因为在Excel中有多少表,就要命名多少个区域,然后在Word中就要建立相应数量的书签。

2. 由于表格大小不一,因此粘贴到Word中时,如果表格太宽,会伸出到Word页面之外。因此,在设置表格尺寸时,使用了一个固定尺寸来除以表格列数得到表格中每列的宽度,并自动调节。

3. 更改书签的文本信息后,会删除该书签。因此为了使代码重复运行,在粘贴数据表后,会重新插入书签。

示例3:复制工作表中的数据到Word文档

仍然使用上两例中的数据,只是在Word中没有使用书签,而是直接将Excel数据复制到Word文档的末尾。

代码如下:

Sub CopyTableToWordDocument()

Dim wdApp As Word.Application

‘要复制的区域

ThisWorkbook.Sheets(“Data”).Range(“A1:E8”).Copy

‘建立与Word的连接

Set wdApp = New Word.Application

With wdApp

‘打开Word文档

.Documents.OpenFilename:=ThisWorkbook.Path & “\Table.docx”

With .Selection

‘到文档末尾,添加新段落

.EndKey Unit:=wdStory

.TypeParagraph

.Paste

End With

.ActiveDocument.Save

‘退出Word

.Quit

End With

Set wdApp = Nothing

End Sub

示例4:使用Excel数据填充到Word书签位置

如下图所示的工作表,其中A2:B4命名为“rngBookmarkList”。

如何基于Excel数据创建Word文档?

Word文档模板Bookmarks.dot,含有三个书签。

如何基于Excel数据创建Word文档?

在Excel中运行代码后,书签位置的文本被取代。

如何基于Excel数据创建Word文档?

Excel VBE中的代码如下:

Sub PopulateWordDoc1()

Dim wrdApp As Word.Application

Dim wrdDoc As Word.Document

Dim sPath As String

Dim vaBookmarks As Variant

Dim lBookmark As Long

‘使用工作表数据填充书签数组

vaBookmarks = wksBookmarks.Range(“rngBookmarkList”).Value

‘开启Word

Set wrdApp =CreateObject(“Word.Application”)

‘打开模板准备填充

sPath = ThisWorkbook.Path &”\”

Set wrdDoc =wrdApp.Documents.Add(Template:=sPath & “Bookmarks.dot”)

‘使用数组中的数据填充模板中的书签

For lBookmark = LBound(vaBookmarks, 1) ToUBound(vaBookmarks, 1)

wrdDoc.Bookmarks(vaBookmarks(lBookmark,LBound(vaBookmarks, 2))).Range.Text = vaBookmarks(lBookmark,UBound(vaBookmarks, 2))

Next

‘保存被填充的文档并关闭

wrdDoc.SaveAs sPath &”Filled1.doc”

wrdDoc.Close

Set wrdDoc = Nothing

‘关闭Word

wrdApp.Quit False

Set wrdApp = Nothing

End Sub

示例5

如何基于Excel数据创建Word文档?

:使用Excel中的数据分析结果生成不同的Word报告

如下图所示,在工作表中有很多数据,并使用数据透视表来分析这些数据。现在,要生成3份Word文档,分别报告Central、East、West这三个部门的业绩。

如何基于Excel数据创建Word文档?

在工作表中,定义了一个名为rngBookMarks的书签区域I20:J22,与Word模板中的书签相对应。将单元格J20命名为ptrDivName,在程序中更新该单元格的内容。并且,该单元格内容更新后,使用VLookup函数来更新单元格J21和J22中的内容。

创建一个Word模板,在报告中需要更改的3个位置分别定义3个书签,如下图所示,书签与Excel单元格中的内容相一致。

运行代码后,每基于Word模板生成一份文档,都会修改模板中相应书签位置的内容,以生成具体的文档。

代码如下:

SubWordGenerateDivisionSummaries()

Dim wrdApp As Word.Application

Dim wrdDoc As Word.Document

Dim wrdrngBM As Word.Range

Dim piDiv As Excel.PivotItem

Dim rngBookmark As Excel.Range

Dim sPath As String

Dim sBookmarkName As String

On Error GoTo ErrorHandler

‘开启Word

Set wrdApp =CreateObject(“Word.Application”)

sPath = ThisWorkbook.Path &”\”

‘基于模板创建新的文档

Set wrdDoc =wrdApp.Documents.Add(Template:=sPath & “SalaryReport.dot”)

‘遍历数据透视表中的每个部门

For Each piDiv InwksData.PivotTables(1).PivotFields(“Division”).PivotItems

‘填充部门名单元格

wksData.Range(“ptrDivName”) =piDiv.Value

‘重新计算工作表来更新部门的结果

wksData.Calculate

‘从工作表中取数据填充模板中的书签

For Each rngBookmark InwksData.Range(“rngBookmarks”).Rows

‘获取书签名

sBookmarkName =rngBookmark.Cells(1, 1).Value

‘获取书签跨越的Word区域

Set wrdrngBM =wrdDoc.Bookmarks(sBookmarkName).Range

‘设置区域中的文本(这将删除书签)

wrdrngBM.Text =rngBookmark.Cells(1, 2).Text

‘重新创建书签以便下次循环

wrdDoc.Bookmarks.Add sBookmarkName,wrdrngBM

Next rngBookmark

‘更新可能与书签相链接的字段

wrdDoc.Fields.Update

‘保存填充的文档

wrdDoc.SaveAs sPath & “SalaryResults – ” & piDiv.Value & “.doc”

Next piDiv

‘关闭Word文档

wrdDoc.Close

Set wrdDoc = Nothing

‘关闭Word

wrdApp.Quit False

Set wrdApp = Nothing

MsgBox “Division Summaries GeneratedOK.”

Exit Sub

ErrorHandler:

‘显示错误号和错误描述

‘并且在标题栏中注明程序

MsgBox “Error ” & Err.Number& vbLf & Err.Description, _

vbCritical, “Routine:WordGenerateDivisionSummaries”

End Sub

附:Word对象简介

Application

Word应用程序本身,通过该对象创建、打开和保存Word文档。

Document

Word文档对象

Bookmark

书签,包含在Document、Bookmarks集合中。要在书签位置放置内容,只须指定其Range属性的文本内容。若更改了书签的文本内容,则删除该书签。

Range

文档中某段连续区域。

0
投稿

猜你喜欢

  • 有时候我们打开一个文档,忘记了文档所在的位置。传统方法是打开【我的电脑】,通过搜索的方法去查找,这种方法比较麻烦。那有没有一种更加快捷的方法
  • excel怎么制作三角型堆积柱形图表?excel中想制作对比柱形图,但是想将柱形换成三角形,该怎么换呢?下面我们就来看看详细的设置方法,需要
  • 如果我们对Word排版并不熟悉,那么可能要花费大量的时间在排版上。如果有小技巧,轻轻松松的搞定,大大提高效率。今天小Q就给你分享几个技巧帮助
  • 我们在使用Word编辑文档的时候,有时需要调整文字的间距,在大多数的情况下我们是通过添加空格来改变文字间距。这样的做法明显是很不科学的,如果
  • 本文内容●有关减小图片文件大小的概述●更改图片分辨率●压缩图片●删除图片的裁剪区域●更改压缩图片的默认设置有关减小图片文件大小的概述图片 (
  • 简介:有的小伙伴电脑上的Word图标突然变成这样,是怎么回事?原因:因为没有打开该文档的应用程序,如:你是用Word制作的文档,当你卸载Wo
  • 对于分级显示行,Microsoft Office Excel应用RowLevel-1和RowLevel-2等样式,例如:字体、字号和缩进等格
  • 在公司中使用Word文件经常会看到一些文件都有背景水印,写着“公司绝密”,这些水印是怎么添加到Word中的呢?下面小编就为大家详细介绍一下,
  • 在Excel工作表的单元格中,可以使用两种最基本的数据格式:常数和公式。常数是指文字、数字、日期和时间等数据,还可以包括逻辑值和错误值,每种
  • 从2020年1月14日起,微软宣布正式停止对win7系统的支持,那么win7系统的安全补丁和升级就不会发生。而且继续使用win7系统将大大增
  • Shift是我们平时再熟悉不过的一个键了,在资源管理器或我的电脑中,按住Shift可以强制执行文件的移动操作,配合鼠标还可以进行批量文件的快
  • 很多朋友都不知道如何给PDF文件页码进行编排;今天小编就为大家带来PDF文件页面的编排页码方法;希望对大家会有帮助,感兴趣的朋友一起去看看吧
  • 在编辑word文档,通常都需要在页尾写上页数,但是word文档默认添加页尾会有一条横线,如果我们不想要这条横线时,我们要把它去掉。分享一个怎
  • Word文档容量过大,很大一方面原因就是文档中有插入了过大的图片文件。下面小编就给大家介绍如何压缩Word文档中图片的方法,有需要的朋友可以
  • 计算机二级办公软件的考试题目中,常常会要求新建样式,并对字体和段落做出相应的设置,那么word怎么新建样式?下面小编就为大家介绍word建立
  • 近日,有不少果粉在后台发贴咨询iOS15越狱相关问题,如:iOS15越狱什么时候出?iOS14.8.1越狱还有机会吗?A13-A14iOS1
  • excel是我们常用的办公软件,有时为了突出表格内容,需要给表格添加一些边框样式,那么excel表格怎样添加边框?下面小编带来给表格加边框及
  • 在 iOS 14 中,苹果加入了全新的小组件,让 iPhone 桌面布局焕然一新,更有趣味和个性。然而,小组件也存在一些缺点,其中包括用户无
  • word2007添加上下标的步骤如下:步骤一:首先打开一个需要修改的文档,选定需要设为上标或者是下标的字,右键单击,选择“字体”。 &nbs
  • 在win10系统中自带的微软输入法无需再安装其他拼音输入法就可以轻松输入汉字,非常方便,但是有的用户却遇到了Win10专业版自带的微软输入法
手机版 电脑教程 asp之家 www.aspxhome.com