在VBA中经常需要进行office软件互访问,比如将excel中的数据导出到word中,这时需要涉及到在excel中通过OLE技术引用word软件,在这过程中VBA提供了两种绑定方式,前绑定和后绑定。 前绑定需要在工具菜单的引用对话框下首先引用对象库,在编译期完成绑定,这样的优点是在编码过程中可以实时看到word对象引用的方法属性等提示。下面是一个前绑定导出excel第一行第一列单元格到word文件的例程: Sub qianqi1() Dim App As Word.Application Dim doc As Word.Document Set App = New Word.Application Set doc = App.Documents.Add doc.Content.InsertAfter Worksheets(1).Cells(1, 1).Value doc.SaveAs Filename:="c:\123.doc" doc.Close App.Quit Set doc = Nothing Set App = Nothing End Sub 前绑定还可以使用一种即时实例化变量,即声明时候就实例化,不需要set语句,代码如下: Sub qianqi1() Dim App As New Word.Application ‘这是即时实例化 Dim doc As Word.Document Set doc = App.Documents.Add doc.Content.InsertAfter Worksheets(1).Cells(1, 1).Value doc.SaveAs Filename:="c:\1234.doc" doc.Close App.Quit Set doc = Nothing Set App = Nothing End Sub 后期绑定是指在运行代码的过程中创建对象,指定对象类型,不需要先声明。 对于后绑定来说,优点是不需要设置引用对话框,缺点是编码时不会有提示,推荐用前绑定,下面是示例: Sub houqi() On Error Resume Next Set wordapp = GetObject(, "Word.Application") ’看看word软件是否已经开着,开着就不用生成新对象 If Err <> 0 Then Set wordapp = CreateObject("Word.Application") End If Set doc = wordapp.Documents.Add doc.Content.InsertAfter Worksheets(1).Cells(1, 1).Value doc.SaveAs Filename:="c:\127.doc" doc.Close wordapp.Quit Set doc = Nothing Set wordapp = Nothing End Sub |
|