工作簿无法分配

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