Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2017, 12:24   #1
ncux0075
Пользователь
 
Регистрация: 13.01.2015
Сообщений: 10
По умолчанию копирование данных из одной книги ексель в другую

Добрый день. Из одной книги открываю другие и копирую данные, структура таблиц одинакова, меняется кол-во строк. написанный код ниже почему то не работает, все ругается на рейндж.
Private Sub CommandButton21_Click()
Dim i As Long
Dim nam As Variant
Dim st As Variant
Dim sr As Variant
Dim iSource As Worksheet
For i = 1 To 1
nam = i
Workbooks.Open Filename:=adr & nam & ".xlsx"




'определяем диапазон что нужно скопировать
st = 1
sr = 1
Do Until IsEmpty(Cells(st, 1))
st = st + 1
Loop
Do Until IsEmpty(Cells(1, sr))
sr = sr + 1
Loop
' выделяем и копируем

ActiveSheet.Range(Cells(1, 1), Cells(st, sr)).Copy




sti = 1

Do Until IsEmpty(Cells(st, 1))
sti = st + 1
Loop

ActiveSheet.Paste


Next i


End Sub
ncux0075 вне форума Ответить с цитированием
Старый 17.01.2017, 12:39   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

1 Зачем For 1 => 1 ?
2 последнии ячейки можна так определять http://forum.sources.ru/index.php?showtopic=93671#
3 приложите пример данных входа/выхода
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 17.01.2017, 12:52   #3
ncux0075
Пользователь
 
Регистрация: 13.01.2015
Сообщений: 10
По умолчанию

диапазон больше будет, просто сейчас один для примера.

знаю есть другой способ определения это я так накидал просто на скорую руку.

у меня вся суть заключается что я активирую открытую книгу, и не могу с него скопировать, т.к он выделяется диапазон и копирует с книги где находиться кнопка. А activatesheet не подходит для range. я так сам разберусь просто завал на работе. думал кто подскажет где косячу.
ncux0075 вне форума Ответить с цитированием
Старый 17.01.2017, 13:17   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

ActiveSheet.Range(Cells(1, 1), Cells(st, sr)).Copy - ета строка нормально работает? если да, тогда
ActiveSheet.Paste заменить на ActiveSheet.cells(СТРОКА, СТОЛБЕЦ).Paste
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 17.01.2017, 13:28   #5
ncux0075
Пользователь
 
Регистрация: 13.01.2015
Сообщений: 10
По умолчанию

нет ругается application-defined or object-defined error

если убрать activesheet то ругаться перестает.

но ругается дальше на то где вставить. а без activesheet он диапазон копирует с книги где кнопка
ncux0075 вне форума Ответить с цитированием
Старый 17.01.2017, 14:13   #6
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

о5 же, сложно без файла угадывать.

вместо .Paste напишите .PasteSpecial xlPasteValues
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 18.01.2017, 14:43   #7
ncux0075
Пользователь
 
Регистрация: 13.01.2015
Сообщений: 10
По умолчанию

ну вот подделал.

Sub Кнопка4_Щелчок()
Dim nstr As Integer
Dim nstl As Integer
Dim kn1 As Workbook
Dim kn2 As Workbook
Dim shkn1 As Worksheet
Dim shkn2 As Worksheet
'Set kn1 = Workbooks("Свод1.xlsm")


Dim i As Long
For i = 1 To 1
Set kn2 = Workbooks.Open(adr & i & ".xlsx")
'определяем последнюю заполненую строку
nstr = kn2.Worksheets(1).Cells(kn2.Workshe ets(1).Rows.Count, 1).End(xlUp).Row
'определяем последний заполненый столбец
nstl = kn2.Worksheets(1).Cells(1, kn2.Worksheets(1).Columns.Count).En d(xlToLeft).Column
kn2.Worksheets(1).Range(Cells(1, 1), Cells(nstr, nstl)).Copy
'kn1("Свод1.xlsm").Worksheets("Лист 1").Range(Cells(1, 1), Cells(nstr, nstl)).Paste
'kn1.Worksheets("Лист1").Activate

Windows("Свод1.xlsm").Activate
Range("A1").Select
до этой строки все делает копирует диапазон, возвр в ячейку а1, а после ошибка
ActiveSheet.Paste


Next i
End Sub
ncux0075 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование (перенос) данных из одной книги в другую по ячейкам Mpgeshka Microsoft Office Excel 42 16.07.2015 13:16
Копирование данных из одной книги в другую в разные столбцы. kipish_lp Microsoft Office Excel 15 15.07.2015 07:27
Копирование из одной книги в другую 804040 Microsoft Office Excel 4 16.08.2010 11:03
Копирование данных из одной рабочей книги в другую макросом. Andrey3055 Microsoft Office Excel 2 30.10.2009 22:00
Сложное копирование из одной книги в другую kzld Microsoft Office Excel 12 15.07.2009 11:56