2013-07-15 5 views
3

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

Dim Basicwb As Excel.Workbook 
Dim Basic As Excel.Application 

Set Basic = New Excel.Application 
Set Basicwb = Basic.Workbooks.Open("X:\Job\Masroori\3-042-PMS.xlsx") 

, но проблема в том, как я могу refrence, если я не хочу, чтобы открыть его каждый раз. Я использовал этот код (без .Open), но я получаю эту ошибку! : «Подстрочный из диапазона»

Set Basicwb = Basic.Workbooks("X:\Job\Masroori\3-042-PMS.xlsx") 

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

ответ

2

Взятые из msdn сайта для Workbooks собственности:

«Возвращает Workbooks коллекцию, которая представляет все открытые книги только для чтения».

Следовательно, последняя строка вашего кода дает вам ошибку, так как файл не открыт. AFAIK, вы не можете ссылаться на объекты в рабочей книге, если эта книга не открыта. Вы можете получить доступ к любой книге без ее активации (поэтому без использования .Activate), но она должна быть открыта. Может быть, это так, речь идет о помощи к вам:

Open Excel file for reading with VBA without display

Если рабочая книга открыта, вы можете сделать следующее:

Dim wBook as Excel.Workbook, rngTemp as range 
Set wBook = workbooks("wbName.xls") 
With wBook 
    ' Do stuff, no need to activate. Example: 
    set rngTemp=.sheets(1).usedRange 
End With 

Я надеюсь, что это помогает?

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