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

以下返回错误:

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


我知道我可以说:

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


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

最佳答案

您可以使用.ParentRange object

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


之所以可行,是因为.Range对象接受并解释了描述特定单元格的各种文本。如果您向下钻取到单个单元格并使用它来调用.parent,则可以获取工作表参考。

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

08-05 14:34