在不使用.activate的情况下切换不同的工作簿

我想在我的代码中引用不同的工作簿,并使用了以下代码:

Dim Basicwb As Excel.Workbook Dim Basic As Excel.Application Set Basic = New Excel.Application Set Basicwb = Basic.Workbooks.Open("X:\Job\Masroori\3-042-PMS.xlsx") 

但问题是如果我不想每次都打开它,我怎么才能参考它。 我用这个代码(没有.Open),但我得到这个错误! :“下标超出范围”

 Set Basicwb = Basic.Workbooks("X:\Job\Masroori\3-042-PMS.xlsx") 

另外,我不想每次都激活工作簿,有什么办法吗?

Workbooks属性的msdn网站采取:

“返回表示所有打开的工作簿的Workbooks集合,只读”。

因此你的代码的最后一行给你一个错误,因为该文件没有打开。 AFAIK,如果工作簿未打开,则不能在工作簿中引用对象。 你可以访问任何一个工作簿,而不用激活它(所以没有使用.Activate ),但它必须是开放的。 也许这个问题对你有帮助:

使用VBA打开Excel文件,无需显示

如果您的工作簿已打开,则可以执行以下操作:

 Dim wBook as Excel.Workbook, rngTemp as range Set wBook = workbooks("wbName.xls") With wBook ' Do stuff, no need to activate. Example: set rngTemp=.sheets(1).usedRange End With 

我希望这有帮助?