VBA中涉及到跨工作簿操作,往往都是先打开目标工作簿,然后再操作读取数据。除了用open方法打开工作簿外,getobject函数也可以做到跨工作簿读取数据。 getobject函数在(对象)工作簿没有打开的时候,会自动打开工作簿(对象),如果(对象)工作簿已经打开了,则直接引用工作簿(对象)。 getobject是在后台打开工作簿,并不是“不打开工作簿”。对于一些没有密码和链接的工作簿,使用getobject函数以隐藏的方式打开工作簿,速度会稍快些。 对于有密码的工作簿,就必须先open打开,然后再getobject。 GetObject函数的使用十分简单。 栗子:桌面有一文件夹,该文件夹里的工作簿是要引用的数据。 其路径为:C:\Users\Administrator\Desktop\马克思主义\数据.xlsx 数据表为: 像open方法一样,知道文件的路径就可以使用getobject函数跨工作簿获取数据。在另外一工作簿写入代码,跨工作簿提取数据。代码如下: Sub 使用GetObject() Dim Wb As Workbook '定义工作簿 Dim Temp As String '路径 '全路径 Temp = 'C:\Users\Administrator\Desktop\马克思主义\数据.xlsx' Set Wb = GetObject(Temp) '设置 数据.xlsx工作簿对象给Wb变量(打开目标工作簿) With Wb.Sheets(1) '操作目标工作簿的数据 .Range('A1').CurrentRegion.Copy ThisWorkbook.Sheets('sheet5').[a1] End With Wb.Close False '关闭 数据.xlsx工作簿 Set Wb = Nothing '释放变量 End Sub 假如文件的路径写错了,自然报错 最后补充:将getobject换成open方法同样结果。 |
|