前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Office整合应用技术03:从Excel中自动创建Word报告

Office整合应用技术03:从Excel中自动创建Word报告

作者头像
fanjy
发布2020-04-18 00:21:06
2.3K0
发布2020-04-18 00:21:06
举报
文章被收录于专栏:完美Excel完美Excel

导语:使用VBA,我们可以在Office应用软件之间相互访问,这样就能够实现许多工作的自动化,例如数据整合、报表创建等。本文展示了一个将Excel工作簿自动转换成Word总结报告的示例。

示例工作簿的工作表Sheet1中的内容如下图1所示。我们可以看到,在该工作表中有一系列简单的数据,以及根据这些数据创建的两个图表。

图1

下面,我们将根据这些数据和图表使用VBA自动创建一份简洁的Word报告。

按Alt+F11组合键,打开VBE,插入一个标准模块。由于我们要与Word交互,因此要使用相应的Word对象,可以使用前期绑定,即单击VBE菜单中的“工具——引用”,在弹出的“引用”对话框中找到并选取“MicrosoftWord XX.0 Object Library”库,如下图2所示。

图2

也可以使用后期绑定,即在代码中使用CreateObject函数来创建应用程序对象实例。本例中使用后期绑定。

在标准模块中输入下面的代码:

代码语言:javascript
复制
Sub BuildWord()    Dim i As Integer    Dim strDocTitle As String    Dim strDocBody As String    Dim strSubBody(1 To 2) As String      '文档标题    strDocTitle = "商品年度销售量分析"      '文档内容    strDocBody = "下面的内容是上一年度的商品销售量分析," & _        "分别是4个季度的销售量。" & _        "使用了两个图表,一个是柱状图,一个是饼图," & _        "分别从不同的角度开展分析。"          '介绍图表的内容    strSubBody(1) = "这是销售量分析的第1个图表。" & _        "可以看出四季度销量最高,一季度销量最低。"    strSubBody(2) = "这是销售量分析的第2个图表。" & _        "可以看出二季度和四季度占据了大部分面积。"      '生成Word文档    Dim oWordApp As Object    Dim oWordDoc As Object       Set oWordApp =CreateObject("Word.Application")    Set oWordDoc = oWordApp.Documents.Add      '在Word文档中输入标题和内容    With oWordApp        .Selection.Style =.ActiveDocument.Styles("标题 1")        .Selection.TypeText strDocTitle        .Selection.TypeParagraph        .Selection.TypeText strDocBody    End WithEnd Sub

运行后,将生成如下图3所示的Word文档。

图3

可以看到,代码在Word中插入了2段内容:第1段是标题并应用了相应的标题样式,第2段是一个普通的段落。

接着,我们添加图表及相应的介绍,可以使用下面的代码:

'在Word文档中插入图表并输入相应的文本

For i = 1 To 2

Worksheets("Sheet1").ChartObjects(i).Activate

Worksheets("Sheet1").ChartObjects(i).Copy

With oWordApp

.Selection.TypeParagraph

.Selection.Style = .ActiveDocument.Styles("标题 2")

.Selection.TypeText ActiveChart.ChartTitle.Text

.Selection.TypeParagraph

.Selection.TypeText strSubBody(i)

.Selection.TypeParagraph

.Selection.Paste

End With

Next i

代码遍历了工作表中的两个图表,将其复制到Word文档中并添加相应的段落和文本。

完整的代码如下:

代码语言:javascript
复制
Sub BuildWord()    Dim i As Integer    Dim strDocTitle As String    Dim strDocBody As String    Dim strSubBody(1 To 2) As String      '文档标题    strDocTitle = "商品年度销售量分析"      '文档内容    strDocBody = "下面的内容是上一年度的商品销售量分析," & _        "分别是4个季度的销售量。" & _        "使用了两个图表,一个是柱状图,一个是饼图," & _        "分别从不同的角度开展分析。"          '介绍图表的内容    strSubBody(1) = "这是销售量分析的第1个图表。" & _        "可以看出四季度销量最高,一季度销量最低。"    strSubBody(2) = "这是销售量分析的第2个图表。" & _        "可以看出二季度和四季度占据了大部分面积。"      '生成Word文档    Dim oWordApp As Object    Dim oWordDoc As Object       Set oWordApp =CreateObject("Word.Application")    Set oWordDoc = oWordApp.Documents.Add      '在Word文档中输入标题和内容    With oWordApp        .Selection.Style =.ActiveDocument.Styles("标题 1")       .Selection.TypeText strDocTitle        .Selection.TypeParagraph        .Selection.TypeText strDocBody    End With      '在Word文档中插入图表并输入相应的文本    For i = 1 To 2       Worksheets("Sheet1").ChartObjects(i).Activate        Worksheets("Sheet1").ChartObjects(i).Copy        With oWordApp            .Selection.TypeParagraph            .Selection.Style =.ActiveDocument.Styles("标题 2")            .Selection.TypeText ActiveChart.ChartTitle.Text            .Selection.TypeParagraph            .Selection.TypeText strSubBody(i)            .Selection.TypeParagraph            .Selection.Paste        End With    Next i      '使Word文档可见    oWordApp.Visible = True      '保存文档    oWordDoc.SaveAs ThisWorkbook.Path &"\testdoc.docx"      '退出Word   'oWordApp.Quit      '释放对象变量    Set oWordDoc = Nothing    Set oWordApp = NothingEnd Sub

运行代码后,生成的Word报告文档如下图4所示。

图4

这里介绍的实现自动生成Word报告的代码很清晰,比较容易理解,也容易结合实际工作表稍作修改实现相应的报告。强烈建议你动手实践上述示例代码,以更好地加深理解,促进更灵活地运用到自已的实际中。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档