2015-03-17 10 views
2

У меня уже есть одна рабочая книга, но я запускаю макрос из другой книги. Я хотел бы активировать первую книгу, используя ее имя.Как активировать книгу, открытую с использованием имени книги в VBA

Код:

FileName = input_path_1 & input_file_1 
Workbooks(FileName.xls).Activate 

Когда я пытаюсь сделать это, он дает мне «Подстрочный из диапазона» ошибка. Как это решить?

ответ

4

Проверьте, имеет ли ваша переменная Filename правильное имя файла. (например, Sample.xls)
Также проверьте правильность значений в input_path_1 и input_file_1.
Если у них это должно быть так:

Workbooks(Filename).Activate 

Теперь, если вам нужно добавить имя расширения (например, Filename значение только Пример):

Workbooks(Filename & ".xls").Activate 

Аргумент должен всегда быть в виде строки и быть полным именем файла (с расширением). Хотя цифры (индекс) также принимаются, вы не можете быть уверены, какой индекс относится к какой книге. Еще лучше назначьте его переменной.

Dim otherWB As Workbook 
Set otherWB = Workbooks(Filename) 
'Set otherWB = Workbooks(Filename & ".xls") '~~> for second scenario above 

Edit1: Из комментариев, если Filename содержит FULLPATH, то это может работать.

Dim Filename1 As String 
Filename1 = Split(Filename, "\")(UBound(Split(Filename, "\"))) 
Workbooks(Filename1).Activate 
+0

Шахта содержит расширение .xls, поэтому я использовал решение для первого. Но все же это дает мне индексную ошибку. Ошибка выполнения 9. – lakesh

+0

@lakesh Попробуйте 'Debug.Print Filename', если вы получите то же самое имя файла книги. Также дважды проверьте правильность расширения файла. (например, XL2007 и up имеют расширение '.xlsx'. – L42

+0

Да, значение переменной корректно, потому что я использовал его для открытия файла. – lakesh

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