Excel97 и Excel2000

Программирование на Visual Basic for Applications
alex_ustas
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 31.07.2004 (Сб) 19:53

Excel97 и Excel2000

Сообщение alex_ustas » 09.09.2004 (Чт) 13:20

Вот строчка, которая работает в 97-ом и не признает 2000-го:

Workbooks("XXX").Worksheets("X1").Copy
Workbooks("Z").Worksheets(1)

Ошибка такакя:
"run time err 9
subscript out of range"

Кто-то по этому поводу что-то скажет? Ошибка странная :roll: выходит написанное мною никому не нужно, потому-что только я один работаю в 97-ом :)))))) Спасибо за ответ.

Хитрый
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 10
Зарегистрирован: 09.09.2004 (Чт) 14:10
Откуда: г. Уфа

Сообщение Хитрый » 09.09.2004 (Чт) 14:13

Такая ошибка возникает (по крайней мере у меня так бывало) с именами файлов. Например экселовский файл называется ХХХ.xls а в коде он у тебя прописан как zzz.xls
Разъясни подробней если возможно, постораюсь помочь. :wink:

alex_ustas
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 31.07.2004 (Сб) 19:53

Сообщение alex_ustas » 09.09.2004 (Чт) 14:29

Есть файл calc.xls. Программа загружает в него листы из файлов K.xls и N.xls. Загрузка проходит успешно, если это только Excel97. Не думаю, что это связано с именами файлов :(

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 09.09.2004 (Чт) 15:34

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

alex_ustas
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 31.07.2004 (Сб) 19:53

Сообщение alex_ustas » 09.09.2004 (Чт) 16:30

'Вот эта процедура.
Public Sub Zagryzka()
ChDir "\\server\Users\Каталог\"

Workbooks.Open FileName:= _
"\\server\Users\Каталог\K.xls"
Workbooks.Open FileName:= _
"\\server\Users\Каталог\N.xls"

Workbooks("K").DisplayWorkbookTabs = True
Workbooks("N").DisplayWorkbookTabs = True

Application.DisplayAlerts = False

Workbooks("K").Worksheets("Sheet1").Copy Workbooks ("calc").Worksheets(1)
Workbooks("N").Worksheets("Sheet1").Copy Workbooks("calc").Worksheets(2)

Application.DisplayAlerts = True

Workbooks("calc").Worksheets("Sheet1").Name = "Лист2"
Workbooks("calc").Worksheets("Sheet1 (2)").Name = "Лист3"

Workbooks("K.xls").Сlose (False)
Workbooks("N.xls").Сlose (False)

End Sub
Да, может кто еще подскажет другой способ того что она делает :) Я то в ВБА пока еще 0 ))

alex_ustas
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 31.07.2004 (Сб) 19:53

Сообщение alex_ustas » 09.09.2004 (Чт) 16:34

Ошибку выдает в строчке.
Workbooks("K").Worksheets("Sheet1").Copy Workbooks ("calc").Worksheets(1).

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 09.09.2004 (Чт) 17:52

Я работаю в 97! :)
Ошибка-то какая?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 09.09.2004 (Чт) 18:31

попробуй для начала копировать только из одной книги и везде поставь типа K.xls
ps а не легче в книгах K и N обозвать листы по нормальному чтобы потом не мучаться с их переименовкой :?:
pps в 2003 работает
Ничто так не ограничивает полёт мысли программиста, как компилятор

alex_ustas
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 31.07.2004 (Сб) 19:53

Сообщение alex_ustas » 10.09.2004 (Пт) 10:22

ps а не легче в книгах K и N обозвать листы по нормальному чтобы потом не мучаться с их переименовкой :?:

Нет. Это прайсы поставщиков. Зачем мне еще и в них лазить? Я работаю с тем, что мне дают. Я вот думаю, почему Лист2 и Лист3, а не К и N )
Ладно, ребята, спасибо, буду разбираться

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 10.09.2004 (Пт) 11:40

да еще (вобщем-то это стандартный совет) попробуй нажать записать макрос открой нужные книги, скопируй из них листы и посмотри что получилось
Ничто так не ограничивает полёт мысли программиста, как компилятор

alex_ustas
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 31.07.2004 (Сб) 19:53

Сообщение alex_ustas » 10.09.2004 (Пт) 12:22

Кому интересно, причина была в следующем. Книги нужно прописывать с расшерением. Т.е. не Workbooks("K"), а Workbooks("K.xls") и т.д. В этом случае работает. Не знаю, может если поставить все сервис паки на офис 2000 проблем бы не возникало.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 10.09.2004 (Пт) 12:24

Помоему это зависит от настроек машины (опция "Скрывать расширения для зарегистрированных типов")
Lasciate ogni speranza, voi ch'entrate.

alex_ustas
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 31.07.2004 (Сб) 19:53

Сообщение alex_ustas » 10.09.2004 (Пт) 12:24

Кому интересно, причина была в следующем. Книги нужно прописывать с расшерением. Т.е. не Workbooks("K"), а Workbooks("K.xls") и т.д. В этом случае работает. Не знаю, может если поставить все сервис паки на офис 2000 проблем бы не возникало. :roll:

alex_ustas
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 31.07.2004 (Сб) 19:53

Сообщение alex_ustas » 10.09.2004 (Пт) 12:30

Да, alibek прав :) Спасибо.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

    TopList