Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Образовательный студенческий форум _ Информатика / Программирование _ Вопрос по работе с объектами типа Range (VBA Excel)

Автор: Red_Garry 20.3.2010, 7:38

Что здесь неправильно:
Dim d As Range
Dim c As Range
d = Workbooks("d:\Книга1.xls").Worksheets("Лист1").Range("A1:B10")
c = Workbooks("d:\Книга2.xls").Worksheets("Лист1").Range("A1:B10")
c = d.Value

При выполнении этого куска кода выдаётся ошибка:
Run-time error '9':
Subscript out of range

т.е. есть необходимость копирования данных из диапазона Книга1 в аналогичный диапазон Книга2. Обе книги открыты. Подскажите, пожалуйста.

Автор: Vahappaday 20.3.2010, 11:40

У меня работает вот так:

Код
Dim d As Range
Dim c As Range
Set d = Workbooks("Книга1.xlsx").Worksheets("Лист1").Range("A1:B10")
Set c = Workbooks("Книга2.xlsx").Worksheets("Лист1").Range("A1:B10")
c.Value = d.Value


xlsx - не стал пробовать с книгами старого формата, надеюсь, будет работать

Set - корректное присвоение ссылки на объект
Почитать можно тут
http://msdn.microsoft.com/en-us/library/aa264506%28VS.60%29.aspx

Абсолютные пути не поддерживаются, не даром Excel начинает ругаться, когда открываются две книги с разными именами из разных мест, так что используем какой-то другой метод, имя книги или, как я сделал тут, имя файла с книгой без пути. Именно из-за этого выскакивала Run-Time Error '9'.

ну... и c.Value тоже надо было не забыть

Автор: Red_Garry 20.3.2010, 12:37

Спасибо! Ваш вариант работает! Работает и с форматом xls

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)