要从Excel中访问Word文档,需要建立对Word的连接。建立连接有两种方法:后期绑定和前期绑定。前期绑定能够更容易地利用自动提示编写代码,更早发现编码错误,而后期绑定直到代码执行时才创建连接,在版本上更灵活。
要使用前期绑定,则需要先创建对特定应用程序类型库的引用。在VBE中,单击菜单“工具—引用”,在“引用”对话框中找到所需的类型库并选中其前面的复选框,如下图6所示,创建对“MicrosoftWord 16.0 Object Library”的引用。
图6:引用所需的库
可以使用CreateObject函数创建后期绑定,例如语句:
Set wrdApp =CreateObject("Word.Application")
创建Word对象并赋值给变量wrdApp。
如无特别说明,我们下面的示例都使用前期绑定。
打开Word文档并粘贴Excel工作表数据
下面的程序复制Excel工作表中的数据并添加到指定Word文档的末尾。
代码语言:javascript复制Sub GetDataFromExcelToWord()
Dim wrdApp As Word.Application
'复制Excel工作表数据
Worksheets("Sheet1").Range("A1:B3").Copy
'创建与Word的连接
Set wrdApp = New Word.Application
With wrdApp
'打开指定的Word文档
.Documents.Open Filename:=ThisWorkbook.Path &"myDatas.docx"
'在文档末尾添加新段落并粘贴数据
With .Selection
.EndKey Unit:=wdStory
.TypeParagraph
.Paste
End With
'保存文档
.ActiveDocument.Save
'退出Word
.Quit
End With
'释放对象变量
Set wrdApp = Nothing
End Sub
在已经打开的Word文档中粘贴Excel数据
下面的代码复制工作表数据并粘贴到当前Word文档的末尾:
代码语言:javascript复制Sub CopyDataToOpenWord()
Dim wrdApp As Word.Application
'复制Excel工作表数据
Worksheets("Sheet1").Range("A1:B3").Copy
'创建对已打开的Word文档的连接
Set wrdApp = GetObject(, "Word.Application")
'在文档末尾添加段落并粘贴数据
With wrdApp.Selection
.EndKey Unit:=wdStory
.TypeParagraph
.Paste
End With
'释放对象变量
Set wrdApp = Nothing
End Sub
代码中GetObject函数忽略了第一个参数,这将直接访问当前打开的活动Word文档。
创建新的Word文档并粘贴Excel数据
下面的代码将创建一个新的Word文档将添加从Excel中复制的数据:
代码语言:javascript复制Sub CopyDataToWord()
Dim wrdApp As Word.Application
'复制Excel工作表数据
Worksheets("Sheet1").Range("A1:B3").Copy
On Error Resume Next
'试图创建与已打开的Word文档的连接
Set wrdApp = GetObject(, "Word.Application")
'如果连接失败,则打开Word应用程序
If wrdApp Is Nothing Then
Set wrdApp = GetObject("", "Word.Application")
End If
On Error GoTo 0
'创建新文档
With wrdApp
.Documents.Add
.Visible = True
End With
'在文档末尾添加段落并粘贴数据
With wrdApp.Selection
.EndKey Unit:=wdStory
.TypeParagraph
.Paste
End With
'释放对象变量
Set wrdApp = Nothing
End Sub
代码中,GetObject函数的第一个参数为零长度的字符串,将创建一个新的Word实例。