如何在word、ppt中用vba获取已经打开的excel应用程序对象?

 

在word、ppt中写vba代码与excel交互时,经常需要打开excel读取它的数据。

 

这时候可以选择ado或者Workbooks.Open方法打开。

 

但是,最近遇到了一个场景,Excel必须先手动打开,也就是这个Excel不是通过VBA打开的,而是事先人工打开的,然后再在这个打开的Excel里面取数。

 

这个Excel怎么用VBA引用呢?

 

这里可以用GetObject函数来引用。

 

它的语法是这样的:

 

GetObject([pathname] [, class])

 

第一个参数要引用的文件所在的位置,第二个参数是这个对象的类名。

 

它不仅可以获取已经打开的对象,还可以通过指定第一个参数来打开指定的对象。

 

举个例子:

 

如果要在Word或者PPT中引用D盘下的Test.xlsx文件,可以用如下的代码:

 

Sub 水星excel()
Dim oWB As Workbook
Set oWB = VBA.GetObject(“d:\test.xlsx”)
End Sub

 

如果这个文件是事先人工打开的,可以在word、ppt中用如下的代码引用它:

 

Sub 水星excel()
Set oExcelApp = VBA.GetObject(, “Excel.application”)
MsgBox oExcelApp.Windows(1).Caption
End Sub

 

注意看这个写法,GetObject(, “Excel.application”),第一个参数是省略的,第二个参数是Excel应用程序的类名。

       

发表评论