Страницы: 1
RSS
Копирование диапазона ячеек на другой лист
 
Добрый день, форумчане!
Обращаюсь за помощью, в простой операции копировании диапазона ячеек с одного листа на другой.
Пример кода:
Код
Sub люди_на_проектах()
Worksheets("люди_на_проектах").Cells.Clear
k = Workbooks("Ежедневная_сводка").Worksheets("Сводная_таблица_ГК").Range("A1").CurrentRegion.Rows.Count
Set d = Workbooks("Ежедневная_сводка").Worksheets("Сводная_таблица_ГК").Range(Cells(1, 1), Cells(k, 3))
d.Copy Destination:=Workbooks("Ежедневная_сводка").Worksheets("люди_на_проектах").Cells(1, 1)
End Sub
появляется ошибка Run-time error '1004':  Application-defined or object-defined  error

Буду признателен за помощь!
 
Как макрос узнает путь к книге-источнику? Если это все в одной кгиге, ее указывать не обязательно.
 
vikttur, не совсем понял вопрос. Я ведь прописываю путь, начиная с Workbooks("Ежедневная_сводка").
 
Выглядит, как будто у книги не указано расширение.
Код
Workbooks("Ежедневная_сводка")
 
Добрый день.
Мне кажется, если вы в момент выполнения макроса не находитесь на листе "Сводная_таблица_ГК", то у вас ошибка в обращении к ячейкам рабочего листа:
Код
Set d = Workbooks("Ежедневная_сводка").Worksheets("Сводная_таблица_ГК").Range(Cells(1, 1), Cells(k, 3))
'мне кажется перед каждой Cell надо прописывать полный путь.
Set d = Workbooks("Ежедневная_сводка").Worksheets("Сводная_таблица_ГК").Range _
(Workbooks("Ежедневная_сводка").Worksheets("Сводная_таблица_ГК").Cells(1, 1), Workbooks("Ежедневная_сводка").Worksheets("Сводная_таблица_ГК").Cells(k, 3))
Кому решение нужно - тот пример и рисует.
 
Цитата
galver написал: не совсем понял вопрос.
Если обращение к другой книге, должен быть указан полный путь к ней.

Диапазон формируется из ячеек АКТИВНОГО листа (у Cells  не указан родитель):
Код
Worksheets("Сводная_таблица_ГК").Range(Cells(1, 1), Cells(k, 3))

И если активен другой лист (не "Сводная_таблица_ГК")...
 
vikttur,Пытливый,МатросНаЗебре   спасибо за помощь!
Действительно, если я не нахожусь на листе "Сводная_таблица_ГК" в момент выполнения макроса, то появляется ошибка.
Подскажите, пожалуйста, а как я могу обойти этот момент?


Изменено: galver - 10.12.2019 15:17:02
 
В какой строке ошибка? Или выложите файл.
 
Пробуем угадать без примера. А так?
Код
Sub люди_на_проектах()
    Workbooks("Ежедневная_сводка.xlsm").Worksheets("люди_на_проектах").Cells.Clear
    k = Workbooks("Ежедневная_сводка.xlsm").Worksheets("Сводная_таблица_ГК").Range("A1").CurrentRegion.Rows.Count
    With Workbooks("Ежедневная_сводка.xlsm").Worksheets("Сводная_таблица_ГК")
    Set d = .Range(.Cells(1, 1), .Cells(k, 3))
    End With
    d.Copy Destination:=Workbooks("Ежедневная_сводка.xlsm").Worksheets("люди_на_проектах").Cells(1, 1)
End Sub
 
Так я ж, вроде, правильный синтаксис там написал уже выше, нет?
Кому решение нужно - тот пример и рисует.
 
МатросНаЗебре, извиняюсь, не успеваю отвечать быстро.
Прикладываю пример
 
МатросНаЗебре, спасибо за исправленный код, он работает.
Можете подсказать, почему мой код не работал полноценно?
 
Пытливый, благодарю за разъяснение!
 
Ещё раз всем спасибо за помощь!
Тему можно закрывать
 
galver, а можно же было вернуться и дополнить сообщение, а не множить "тихо сам с собою я веду беседу"...
 
vikttur, урок усвоил)
У меня еще интернет лагает на работе, плохо грузит сообщения.
Страницы: 1
Наверх