2016-09-20 5 views
2

В VBA я хотел бы ссылаться на листы в разных книгах по имени строки.Как передать полное имя листа Excel в VBA?

следующие ошибки возврата:

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

Я знаю, что я могу сказать:

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

но ищет способ, который не использует коллекции рабочих книг.

ответ

4

Вы можете использовать .ParentRange object.

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

Это работает, потому что объект .Range принимает и интерпретирует более широкий спектр текстов, описывающих конкретную ячейку. Если вы переходите к отдельной ячейке и используете это для вызова .parent, вы можете получить ссылку на рабочий лист.

Если есть вероятность, что My Book.xlsb может быть закрыт, используйте эквивалент Workbook.FullName property, а не только Workbook.Name property.

Смежные вопросы