在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应用程序的类名。
发表评论