手机版

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

时间:2021-09-20 来源:互联网 编辑:宝哥软件园 浏览:

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

a:先说实现思路,然后用不同情况下的例子来说明。

技术路线图

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

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

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

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

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

第二步:在Excel VBE中创建对微软Word对象库的引用。

选择“工具——引用”,在引用对话框中选择“微软Word .0对象库”。

第三步:输入以下代码。

子粘贴ExcelTableIntoWord()

声明一个变量。

将我的范围缩小为Excel。范围

将wd调成Word。应用

将wdDoc调成Word。文件

将WdRange调暗为Word。范围

“复制区域”

设置MyRange=Sheets(“数据”)。范围(“A1:E8”)

我的天使。复制

打开Word文档。

设置wd=新单词。应用

设置wdDoc=wd。文档。打开(此工作簿。路径" \PasteTable.docx ")

wd。可见=真

将光标移动到书签位置。

设置WdRange=wdDoc。书签(“数据表”)。范围

删除旧表单并粘贴新表单。

出错时继续下一步

WdRange。表(1)。删除

WdRange。粘贴

调整列宽。

WdRange。表(1).Columns.SetWidth _

(MyRange。宽度/MyRange。列数),宽度调整

重新插入书签。

wdDoc。书签。添加“数据表”

内存清理。

设置wd=无

设置wdDoc=无

设置WdRange=无

末端接头

描述:

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

2.将Excel数据表复制到Word时,表格过宽,往往会导致格式问题,在代码中会调整表格的列宽。这是一个调整表格列宽度的技巧,即每列的宽度设置为表格总宽度除以表格列数。

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

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

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

第一步:创建一个名为PasteTable.docx的Word文档,在要粘贴数据的地方插入名为DataTable1和DataTable2的书签。关闭文档,并将其放在与Excel文档相同的目录中。

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

第三步:在Excel VBE中创建对微软Word对象库的引用。

选择“工具——引用”,在引用对话框中选择“微软Word .0对象库”。

第四步:输入以下代码。

子粘贴ExcelTableIntoWord()

声明一个变量。

将我的范围缩小为Excel。范围

将wd调成Word。应用

将wdDoc调成Word。文件

将WdRange调暗为Word。范围

模糊如龙

打开Word文档。

设置wd=新单词。应用

设置wdDoc=wd。文档。打开(此工作簿。路径" \PasteTable.docx ")

wd。可见=真

出错时继续下一步

对于i=1到2

设置MyRange=Names("rang" i)。参考范围

我的天使。复制

设置WdRange=wdDoc。书签(“DataTable”I)。范围

WdRange。表(1)。删除

WdRange。粘贴

WdRange。表(1).Columns.SetWidth _

(450/MyRange。列数),wdAdjustNone

wdDoc。书签。添加“数据表”I,WdRange

接下来我

清空记忆。'

Setwd=无

设置wdDoc=无

设置WdRange=无

末端接头

描述:

1.这种方法相当“愚蠢”。因为Excel中的表格很多,所以要命名尽可能多的区域,然后在Word中建立相应数量的书签。

2.因为表格的大小不同,如果粘贴到Word中时表格太宽,它们会突出到Word页面之外。因此,在设置表格大小时,使用固定的大小来划分表格的列数,以获得表格中每一列的宽度,并自动进行调整。

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

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

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

代码如下:

Sub CopyTableToWordDocument()

将wdApp调暗为Word。应用

要复制的区域。

此工作簿。表格(“数据”)。范围(“A1:E8”)。复制

与Word建立连接。

设置wdApp=新单词。应用

使用wdApp

打开Word文档。

. Documents.OpenFilename:=此工作簿。路径" \Table.docx "

和。选择

在文档末尾添加一个新段落。EndKey Unit:=wdStory。键入段落。粘贴

以…结尾

.活动文档.保存

退出Word。放弃

以…结尾

设置wdApp=无

末端接头

例4:用Excel数据填写Word的书签位置。

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

Word文档模板书签。点包含三个书签。

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

Excel VBE中的代码如下:

子弹出文档1()

作为单词变暗。应用

将wrdDoc调暗为Word。文件

作为字符串模糊空间

将变量标记为变量

暗淡无光标记为长

用工作表数据填充书签数组。

vaBookmarks=wksBookmarks。范围(“rngBookmarkList”)。价值

打开Word。

设置wrdApp=CreateObject("Word。应用程序”)

打开模板进行填充。

sPath=此工作簿。路径“\”

设置wrdDoc=wrdApp。文档。添加(模板:=sPath“书签.点”)

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

对于lBookmark=LBound(vabokmark,1)to bound(vabokmark,1)

wrdDoc。书签(瓦布克标记(lBookmark,LBound(瓦布克标记,2)))范围. Text=瓦布克标记(lBookmark,UBound(瓦布克标记,2))

然后

保存已填写的文档并关闭它。

wrdDoc。另存为sPath "Filled1.doc "

wrdDoc。关闭

设置wrdDoc=无

关闭Word。

wrdApp。退出虚假

设置wrdApp=无

末端接头

例5

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

如下图所示,工作表中有大量数据,使用透视表对数据进行分析。现在,需要生成三个Word文档,并报告三个部门的性能,即中、东、西。

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

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

代码运行后,每次基于Word模板生成文档时,都会修改模板中对应书签位置的内容,生成特定的文档。

代码如下:

子词生成概要()

作为单词变暗。应用

将wrdDoc调暗为Word。文件

将wrdrngBM调成Word。范围

将piDiv调成Excel。PivotItem

将笔记本标记为Excel。范围

作为字符串模糊空间

将书签名称设为字符串

出错时转到错误处理程序

打开Word。

设置wrdApp=CreateObject("Word。应用程序”)

sPath=此工作簿。路径"\"

'基于模板创建新的文档

设置wrdDoc=wrdApp .文档。添加(模板:=Spath”工资报告。点”)

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

对于每个piDiv InwksData .数据透视表(1)。数据透视字段("部门")。数据透视项目

'填充部门名单元格

周数据.Range("ptrDivName")=piDiv .价值

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

周数据.计算

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

对于每个rngBookmark InwksData .范围(“rngBookmarks”).行

'获取书签名

sBookmarkName=rngBookmark .细胞(1,1)。价值

'获取书签跨越的单词区域

设置wrdrngBM=wrdDoc .书签。范围

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

wrdrngBM .文本=rngBookmark .单元格(1,2)。文本

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

wrdDoc .书签。添加书签名称

下一个rngBookmark

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

wrdDoc .字段。更新

'保存填充的文档

wrdDoc .savas Spath“薪资结果”PiDiv .价值"。文件"

下一个piDiv

'关闭单词文档

wrdDoc .关闭

设置wrdDoc=无

'关闭单词

wrdApp .退出虚假

设置wrdApp=无

MsgBox "部门汇总生成任务"

出口接头

错误处理器:

'显示错误号和错误描述

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

MsgBox "错误"错误。编号vbLf Err .描述,_

vbCritical,“例程:字生成的视觉摘要”

末端接头

附:Word对象简介

应用

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

文件

单词文档对象

书签

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

范围

文档中某段连续区域。

版权声明:如何基于Excel数据创建Word文档?是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。