前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA实例01:复制多个Excel表到Word

VBA实例01:复制多个Excel表到Word

作者头像
fanjy
发布2020-11-24 10:52:15
4.2K0
发布2020-11-24 10:52:15
举报
文章被收录于专栏:完美Excel完美Excel

学习Excel技术,关注微信公众号:

excelperfect

实例场景

有些时候,需要将多个Excel表复制到Word文档中指定的位置。一般可以使用通常的复制/粘贴操作,然而如果表很多的话,VBA就派上用场了。

演示数据

我们准备了3个表,如下图1至图3所示。

图1

图2

图3

准备工作

我们需要将这3个表插入到名为“Excel报表.docx”的Word文档中。因为要分别插入到文档中指定位置,所以我们在要插入的位置定义书签。将光标放置到要插入表的位置,单击功能区“插入”选项卡“链接”组中的“书签”,输入书签名,单击“添加”按钮,如下图4所示。

图4

由于要插入3个表,因此在要插入的位置添加3个书签。在本例中,我们将3个书签分别命名为“书签1”、“书签2”和“书签3”。

在VBA编辑器中,单击“工具——引用”,找到并选取“Microsoft Word 16.0 Object Library”前的复选框,如下图5所示。

图5

代码

在VBA编辑器中,插入一个新模块,输入下面的代码:

代码语言:javascript
复制
'强制数组下标以1开始
Option Base 1

'将Excel表复制到一个新的Word文档
Sub ExcelTablesToWord()
    Dim rngTable As Excel.Range
    Dim WordApp As Word.Application
    Dim myDoc As Word.Document
    Dim WordTable As Word.Table
    Dim varTableArray As Variant
    Dim varBookmarkArray As Variant
    Dim i As Integer
    
    '要复制的Excel表的表名
    varTableArray = Array("表1", "表2", "表3")
    
    '要粘贴到Word文档的书签名
    varBookmarkArray = Array("书签1", "书签2", "书签3")
    
    '关闭屏幕更新和事件
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    
    '将变量赋值给目标Word文档
    On Error GoTo NotFoundWordDoc
    Set WordApp = GetObject(Class:="Word.Application")
    WordApp.Visible = True
    Set myDoc = WordApp.Documents("Excel报表.docx")
    On Error GoTo 0
    
    '遍历并粘贴Excel表
    For i = LBound(varTableArray) To UBound(varTableArray)
        '从Excel中复制表区域
        Set rngTable = ThisWorkbook.Worksheets(i).ListObjects(varTableArray(i)).Range
        rngTable.Copy
        
        '将表粘贴到Word
        myDoc.Bookmarks(varBookmarkArray(i)).Range.PasteExcelTable _
            LinkedToExcel:=False, _
            WordFormatting:=False, _
            RTF:=False
        
        '自动调整表以适应Word文档
        Set WordTable = myDoc.Tables(i)
        WordTable.AutoFitBehavior (wdAutoFitWindow)
    Next i
    
    '给出消息
    MsgBox "复制完成!", vbInformation
    GoTo EndRoutine
    
    '错误处理
NotFoundWordDoc:
    MsgBox "Word文件'Excel报表.docx'未打开,重试.", 16
    
EndRoutine:
    Application.ScreenUpdating = True
    Application.EnableEvents = True
    Application.CutCopyMode = False
End Sub

运行代码,结果如下图6所示。

图6

应用小结

1.在Word中使用书签功能进行定位,并在代码中利用书签,是一种常用的技巧。

2.使用数组并将表名与书签名相对应,能够极大地方便代码的编写。

3.对Excel数据和Word文档进行合适的设置,能够很好地帮助数据处理。

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料。

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

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

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

本文参与?腾讯云自媒体同步曝光计划? ,欢迎热爱写作的你一起参与!

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