2013-08-12 2 views
2

Я пытаюсь создать VBA в Excel 2010, который берет информацию из другой электронной таблицы, которую мне не разрешают изменять, и переносить ее в электронную таблицу с помощью встроенного макроса. Вот мой код:VBA Ошибка во время выполнения '9': подкласс вне диапазона; пытаясь активировать другую книгу

Sub BringUpWorkbook() 
    Workbooks("RITE 1624.xls").Activate 
End Sub 

у меня есть несколько книг, VBA, посетили десятки сайтов в Интернете, в том числе здесь stackoverflow.com, и не может найти причину, почему я получаю сообщение об ошибке во время выполнения. Рабочая книга уже открыта, я попытался добавить все, что осталось от заголовка, я попытался удалить .xls, я даже сделал все вышеперечисленное с переменной. Есть идеи?

+2

Прокрутите коллекцию книг и отлаживайте их. – Tarik

+0

Не знаете, как это сделать. Посмотрел несколько примеров 'debug.print', и я не понимаю, как это сделать с моим текущим примером, показанным выше. – Lou

ответ

6

Убедитесь, что расширение верно. Если это файл excel-2010, как вы указываете, вам может потребоваться обновить код, чтобы отразить расширение вашего файла «RITE 1624» (например, .xlsx для книги Excel 2010, .xlsm для рабочей книги с макросами 2010 Excel, или независимо от того расширение

Sub BringUpWorkbook() 
    Workbooks("RITE 1624.xlsx").Activate 
End Sub 

EDIT:.

Чтобы убедиться, что вы имеете право имя книги, вы можете напечатать название каждой книги в немедленном окне

.

Откройте редактор VBA, а затем нажмите Ctrl + G, чтобы перейти к op en the Immediate Window (или View> Immediate). Затем запустите следующий макрос:

Sub OpenWkbkNames() 

For Each Workbook In Workbooks 
    Debug.Print Workbook.Name 
Next 
End Sub 

Обратите внимание, что это даст вам имена всех открытых книг в том же экземпляре Excel в качестве макро. Если ваш файл RITE 1624 находится в отдельном экземпляре Excel, то экземпляр, в котором находится ваш макрос, не сможет увидеть этот файл (и он не будет отображаться в выводе кода OpenWkbkNames выше). Самый простой способ разрешить это - открыть все необходимые файлы из экземпляра Excel, который содержит ваш макрос.

Sub BringUpWorkbook() 

    Workbooks.Open("RITE 1624.xls").Activate 
End Sub 
+0

Файл, который я пытаюсь активировать, является файлом '.xls', и я не могу делать никаких изменений или изменений. К сожалению, многие примеры в Интернете для Excel 2003 и 2007, а также мои книги VBA. Компания, над которой я работаю, только что обновилась до 2010 года, поэтому у меня нет большого выбора. – Lou

+0

Извините за путаницу, я хотел сказать изменение расширения, которое вы используете в своем коде, а не расширение исходного файла. Тем не менее, я бы посоветовал @Tarik и отлаживал/печатал имена файлов; Если это работает так, как ожидалось, вам нужно будет сделать символ по проверке персонажа. – Jaycal

+0

Я пробовал это. Не знаете, как использовать 'debug.print'. Это не дало мне всплывающее окно или что-то еще ... за исключением того, что время всплывает, я продолжаю получать. Можете ли вы показать мне в своем примере, как вы будете использовать 'debug.print'? – Lou

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