前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在Excel中使用VBA来自动化Word

在Excel中使用VBA来自动化Word

作者头像
fanjy
发布2023-08-30 08:30:44
7610
发布2023-08-30 08:30:44
举报
文章被收录于专栏:完美Excel

本文演示的例子是,在Excel中使用VBA打开新的Word文档,复制Excel图表并粘贴到这个文档中。同时,介绍了一种你不熟悉Word VBA的情形下怎样获取相关的代码并在Excel中使用的方法。

首先,在Word中,我们录制一个打开新文档的宏。

单击功能区“开发工具”选项卡中的“录制宏”按钮,然后单击“文件——新建——空白文档”,接着单击“开发工具”选项卡中的“停止录制”按钮。

在Word中打开VBE,可以看到录制的宏代码类似如下:

代码语言:javascript
复制
Sub 宏1()
'
' 宏1 宏
'
'
 Documents.Add Template:="Normal", NewTemplate:=False, DocumentType:=0
 Windows("在Excel中使用VBA自动化Word.docx").Activate
End Sub

接着,回到Excel,打开VBE,单击菜单“工具——引用”,在“引用”对话框中,找到并勾选“Microsoft Word xx.x Object Library”库,如下图1所示,单击“确定”。

图1

这样,我们就使用了早期绑定来控制Word,也就可以在Excel VBE中使用如下声明代码:

代码语言:javascript
复制
Dim WordApp As Word.Application
Set WordApp = New Word.Application

接下来,从Word VBE中复制刚才录制的代码到Excel VBE中并稍作调整。在Word VBA中使用Documents.Add开始,在Excel VBA中修改为WordApp.Documents.Add,并且在VBA代码中通常不需要选择并激活对象,因此,修改后的代码如下:

代码语言:javascript
复制
Sub wordfromexcel()
 Dim WordApp As Word.Application
 Set WordApp = New Word.Application
 
 WordApp.Documents.Add Template:="Normal", NewTemplate:=False, DocumentType:=0
 '默认情形下,新文档将被隐藏,下面的代码使其可见
 WordApp.Visible = True
 
 Set WordApp = Nothing
End Sub

注意,使用VBA打开应用程序时,通常是在后台打开,因此,要使Word文档可见,添加了下面的代码:

代码语言:javascript
复制
WordApp.Visible = True

当然,在Excel中,也可以使用宏录制器录制代码,本示例中是复制工作表中的图表。

代码语言:javascript
复制
Sub 宏1()
'
' 宏1 宏
'
'
 ActiveSheet.ChartObjects("图表1").Activate
 ActiveChart.ChartArea.Copy
End Sub

再回到Word中,录制粘贴图表到文档中的代码:

代码语言:javascript
复制
Sub 宏3()
'
' 宏3 宏
'
'
 Selection.PasteSpecial Link:=True, DataType:=wdPasteOLEObject, Placement:= _
 wdInLine, DisplayAsIcon:=False
End Sub

那么,现在可以将上面的两段代码添加到我们的Excel VBE的代码中,记住,对于Word VBE中复制过来的代码,要添加wordApp前缀。代码如下:

代码语言:javascript
复制
Sub wordfromexcel()
 Dim WordApp As Word.Application
 Set WordApp = New Word.Application
 
 WordApp.Documents.Add Template:="Normal", NewTemplate:=False, DocumentType:=0
 '默认情形下,新文档将被隐藏,下面的代码使其可见
 WordApp.Visible = True
 
 '从Excel宏录制器复制的代码
 ActiveSheet.ChartObjects("图表1").Activate
 ActiveChart.ChartArea.Copy
 '从Word宏录制器复制的代码,要在前面添加WordApp.
 WordApp.Selection.PasteSpecial Link:=True, DataType:=wdPasteOLEObject, Placement:= _
   wdInLine, DisplayAsIcon:=False
 
 Set WordApp = Nothing
End Sub

至此,在Excel中打开Word并创建新文档,然后将Excel工作表中的图表复制到该文档中的代码完成。

通过重复上述相同步骤:录制简短的操作,然后将代码转移到Excel中,可以逐步构建更复杂的宏。关键是要保持操作的简短,如果用宏录制器做了太多的动作,代码就会显得冗长而可怕。

随着你逐步熟悉VBA,你可以对录制的代码进行简化,让代码更有效率。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档