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

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

以下返回错误:

Set oSht = Worksheets( "'[My Book.xlsb]MySheet'" ) Set oSht = Evaluate( "'[My Book.xlsb]MySheet'" ) 

我知道我可以说:

 Set oSht = Workbooks("My Book.xlsb").Sheets("MySheet") 

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

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

 Set oSht = Range("'[My Book.xlsb]MySheet'!A1").Parent 

这是有效的,因为.Range对象接受和解释描述特定单元格的更多种类的文本。 如果深入到单个单元格并使用它来调用.parent,则可以实现工作表引用。

如果有可能closuresMy Book.xlsb,请使用Workbook.FullName属性的等效值,而不仅仅是Workbook.Name属性 。