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

时间:2013-07-15 09:01:45

标签: excel excel-vba vba

我想在我的代码中引用不同的工作簿,我使用了这段代码:

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")

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

1 个答案:

答案 0 :(得分:2)

msdn网站获取Workbooks媒体资源:

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

因此,由于文件未打开,代码的最后一行会出错。 AFAIK,如果该工作簿未打开,则无法引用工作簿中的对象。您可以访问任何工作簿而无需激活它(因此不使用.Activate),但必须打开它。也许这个问题对你有帮助:

Open Excel file for reading with VBA without display

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

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

我希望这有帮助吗?