VBA:将工作簿添加到集合

时间:2018-10-29 13:15:41

标签: excel vba

我正在尝试在创建的集合中添加对象工作簿。但是,当我向集合中添加手表时,我看到了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

1 个答案:

答案 0 :(得分:3)

Set wbk = Workbooks.Open(Path)

wbk不是对象。是对象的引用,并且该对象归Excel所有。

wbk.Close

在这一点上,wbk指向已消失的对象。因此,您的收藏夹中仍然有一个参考,但这是对 nothing 的参考。 VBA知道这是一个对象。 IsObject返回Truewbk Is Nothing返回False

但是,这会引发自动化错误

Debug.Print wbk.Name

因为对象本身不见了。如果Workbook对象没有在Excel中打开,则不存在。

因此,工作簿的用户集合是多余的:Application.Workbooks包含您将需要的所有工作簿。