如何将完全限定的 Excel 工作表名称传递给 VBA?

joh*_*why 3 excel vba

在 VBA 中,我想通过字符串名称引用不同工作簿中的工作表。

以下返回错误:

Set oSht = Worksheets( "'[My Book.xlsb]MySheet'" )
Set oSht = Evaluate( "'[My Book.xlsb]MySheet'" )
Run Code Online (Sandbox Code Playgroud)

我知道我可以说:

Set oSht = Workbooks("My Book.xlsb").Sheets("MySheet")
Run Code Online (Sandbox Code Playgroud)

但寻求一种不使用 Workbooks 集合的方法。

小智 5

您可以使用.Parent一个的Range对象。

Set oSht = Range("'[My Book.xlsb]MySheet'!A1").Parent
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为 .Range 对象接受并解释描述特定单元格的更广泛的文本。如果您深入到单个单元格并使用它来调用 .parent,您可以获得工作表引用。

如果 My Book.xlsb 有可能被关闭,请使用Workbook.FullName 属性的等效项,而不仅仅是Workbook.Name 属性。