3

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

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

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

4

1 回答 1

2

取自msdn该物业的网站Workbooks

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

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

打开 Excel 文件以使用 VBA 读取而不显示

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

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

我希望这有帮助?

于 2013-07-15T09:19:21.730 回答