我正在尝试在创建的集合中添加对象工作簿。但是,当我向集合中添加手表时,我看到了item1,但它说没有变量,但路径应指定一个工作簿。
您是否知道我的错误可能来自哪里?
Sub AddWbkToCollection()
Dim Path As String
Dim Coll As Collection
Dim wbk As Workbook
Set Coll = New Collection
Path = WshCockpit.Range("Path")
Set wbk = Workbooks.Open(Path)
Coll.Add wbk, wbk.Name
wbk.Close
Set wbk = Nothing
End Sub
答案 0 :(得分:3)
Set wbk = Workbooks.Open(Path)
wbk
不是对象。是对象的引用,并且该对象归Excel所有。
wbk.Close
在这一点上,wbk
指向已消失的对象。因此,您的收藏夹中仍然有一个参考,但这是对 nothing 的参考。 VBA知道这是一个对象。 IsObject
返回True
,wbk Is Nothing
返回False
。
但是,这会引发自动化错误:
Debug.Print wbk.Name
因为对象本身不见了。如果Workbook
对象没有在Excel中打开,则不存在。
因此,工作簿的用户集合是多余的:Application.Workbooks
包含您将需要的所有工作簿。