工作簿无法分配
Set xlobj = CreateObject("Excel.Application") xlobj.DisplayAlerts = 0 xlobj.Workbooks.Open wbPathName & "\" & wbList(intListCounter), True, True DoEvents Dim wBk As Workbook Set wBk = Workbooks(wbList(intListCounter)) MsgBox wBk
嗨,
我有上面的工作簿。 “Set wBk =”的行会使下标超出范围错误。
这里的“wbList(intListCounter)”里面的内容是正确的,因为它指向一个具有扩展名的xlsm文件。
然而,我怀疑“xlobj.Workbooks.Open”是罪魁祸首,但不能指出错误,因为以上一些是由以前的顾问编写的。
感谢你的帮助!
这里是你的问题,你正在创build一个Excel.Application类的新实例,但是你试图从Active(即运行此过程的实例)打开工作簿。 由于活动/运行实例中的文件未打开,因此预期会出现错误。
你可以通过以下方式
Set wBk = xlobj.Workbooks(wbList(intListCounter))
但是,这看起来很诡异,而且从代码难以遵循。
您应该在打开文件时分配给Workbook对象variables
Dim wBk As Workbook Dim xlObj as Excel.Application Set xlobj = CreateObject("Excel.Application") xlobj.DisplayAlerts = 0 Set wBk = xlobj.Workbooks.Open(wbPathName & "\" & wbList(intListCounter), True, True)
此外,你可能不需要创build一个新的Excel实例(有时候这是必要的,但我认为大多数时候这是没有必要的),在这种情况下,你可以简单地做:
Dim wbK as Workbook Set wBk = Workbooks.Open(wbPathName & "\" & wbList(intListCounter), True, True)
另外请注意,这一行会引发一个438错误:
MsgBox wBk
如果需要,可以这样做:
MsgBox wBk.Name