Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Копирование массива данных с одного файла в другой - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование массива данных с одного файла в другой (Макросы/Sub)
Копирование массива данных с одного файла в другой
Xaden Дата: Четверг, 12.06.2014, 17:03 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Всем доброго времени суток.
Возник такой вопрос, у меня есть два файла "Книга1" и "prn029NN1".
В фаил "Книга1" мне надо перенести определенные данные с фаила "prn029NN1"
Сложность заключается в том, что я как то не правильно это прописал, и у меня он копируется не верно.
Буду благодарен за наставление, советы и помощь.
В файле "prn029NN1" желтым выделил, что буду переносить, почему именно массив, потому что кол-во переносимых данных всегда будет меняться.
ЗЫ Прошу не судть строго мой макрос =)
К сообщению приложен файл: 2163622.xls (38.5 Kb) · prn029NN1.xlsx (29.2 Kb)
 
Ответить
СообщениеВсем доброго времени суток.
Возник такой вопрос, у меня есть два файла "Книга1" и "prn029NN1".
В фаил "Книга1" мне надо перенести определенные данные с фаила "prn029NN1"
Сложность заключается в том, что я как то не правильно это прописал, и у меня он копируется не верно.
Буду благодарен за наставление, советы и помощь.
В файле "prn029NN1" желтым выделил, что буду переносить, почему именно массив, потому что кол-во переносимых данных всегда будет меняться.
ЗЫ Прошу не судть строго мой макрос =)

Автор - Xaden
Дата добавления - 12.06.2014 в 17:03
krosav4ig Дата: Четверг, 12.06.2014, 18:44 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 2346
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
вместо [vba]
Код
wb1.Range("E18:E" & Cells(Rows.Count, 1).End(xlUp).Row).Copy wb2.Range("F3")
[/vba]должно быть[vba]
Код
wb1.Range("E18:E" & wb1.Cells(wb1.Rows.Count, 5).End(xlUp).Row).Copy wb2.Range("F3")
[/vba]
можно еще и так [vba]
Код
wb1.Range("E18").Resize(wb1.Range("E18").End(xlDown).Row - 17).Copy wb2.Range("F3")
[/vba]или так[vba]
Код
With wb1.Range("E18"): .Resize(.End(xlDown).Row - .Row + 1).Copy wb2.Range("F3"): End With
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Четверг, 12.06.2014, 18:52
 
Ответить
Сообщениевместо [vba]
Код
wb1.Range("E18:E" & Cells(Rows.Count, 1).End(xlUp).Row).Copy wb2.Range("F3")
[/vba]должно быть[vba]
Код
wb1.Range("E18:E" & wb1.Cells(wb1.Rows.Count, 5).End(xlUp).Row).Copy wb2.Range("F3")
[/vba]
можно еще и так [vba]
Код
wb1.Range("E18").Resize(wb1.Range("E18").End(xlDown).Row - 17).Copy wb2.Range("F3")
[/vba]или так[vba]
Код
With wb1.Range("E18"): .Resize(.End(xlDown).Row - .Row + 1).Copy wb2.Range("F3"): End With
[/vba]

Автор - krosav4ig
Дата добавления - 12.06.2014 в 18:44
Xaden Дата: Пятница, 13.06.2014, 09:29 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Спасибо Вам огромное, все работает. Наверно не по теме, но все же хотелось бы спросить, можно ли как то переносить не всю ячейку а только определенные фразы или цифры?
 
Ответить
СообщениеСпасибо Вам огромное, все работает. Наверно не по теме, но все же хотелось бы спросить, можно ли как то переносить не всю ячейку а только определенные фразы или цифры?

Автор - Xaden
Дата добавления - 13.06.2014 в 09:29
Hugo Дата: Пятница, 13.06.2014, 09:39 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3250
Репутация: 707 ±
Замечаний: 0% ±

2019
Так Вам нужно переносить? Тут нигде нет переноса...
Но вообще можно и переносить, и только определённые :)


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеТак Вам нужно переносить? Тут нигде нет переноса...
Но вообще можно и переносить, и только определённые :)

Автор - Hugo
Дата добавления - 13.06.2014 в 09:39
Xaden Дата: Пятница, 13.06.2014, 10:33 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
я не правильно выразился, копирование у меня. Например у меня в ячейке данные "2. Cumparator: Вася пупкин" но перенести хочу только "Вася пупкин".
И второй вопрос, у меня ячейка в файле переноса может быть объединенной, пробовал переносить так данные получается она объединенная и копируется, можно это обойти?
 
Ответить
Сообщениея не правильно выразился, копирование у меня. Например у меня в ячейке данные "2. Cumparator: Вася пупкин" но перенести хочу только "Вася пупкин".
И второй вопрос, у меня ячейка в файле переноса может быть объединенной, пробовал переносить так данные получается она объединенная и копируется, можно это обойти?

Автор - Xaden
Дата добавления - 13.06.2014 в 10:33
Hugo Дата: Пятница, 13.06.2014, 10:48 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3250
Репутация: 707 ±
Замечаний: 0% ±

2019
Опять настойчиво переносить? Не путайте помогающих!
Давайте понятный пример - что откуда куда частично копировать, и по какому критерию.
Пока предварительно думаю можно взять в массив всё, удалить из него лишнее, выгрузить. Это если делать массивом, как заказано в начале.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеОпять настойчиво переносить? Не путайте помогающих!
Давайте понятный пример - что откуда куда частично копировать, и по какому критерию.
Пока предварительно думаю можно взять в массив всё, удалить из него лишнее, выгрузить. Это если делать массивом, как заказано в начале.

Автор - Hugo
Дата добавления - 13.06.2014 в 10:48
Xaden Дата: Пятница, 13.06.2014, 11:13 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
В файле желтым отметил объединенные ячейки, в них красным отметил данные которые надо скопировать и вставить в другой фаил.
и еще вопрос, можно макросом прописать, что бы скопировать весь лист и вставить его обратно как значения, вопрос заключается в том, что у меня данный фаил выходит с формулами от БД.
К сообщению приложен файл: 9585040.xlsx (28.0 Kb)
 
Ответить
СообщениеВ файле желтым отметил объединенные ячейки, в них красным отметил данные которые надо скопировать и вставить в другой фаил.
и еще вопрос, можно макросом прописать, что бы скопировать весь лист и вставить его обратно как значения, вопрос заключается в том, что у меня данный фаил выходит с формулами от БД.

Автор - Xaden
Дата добавления - 13.06.2014 в 11:13
Xaden Дата: Пятница, 13.06.2014, 11:16 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
или же прописать такое, выделить лист, убрать все объединения на листе, скопировать и вставить как значения :D что то я по моему уже загнул
 
Ответить
Сообщениеили же прописать такое, выделить лист, убрать все объединения на листе, скопировать и вставить как значения :D что то я по моему уже загнул

Автор - Xaden
Дата добавления - 13.06.2014 в 11:16
Hugo Дата: Пятница, 13.06.2014, 11:25 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3250
Репутация: 707 ±
Замечаний: 0% ±

2019
1. Ищем ячейку по известному значению (например где есть "Data eliberarii / Data livrarii : "), берём всё значение, из него выбираем последнее слово, или заменяем известное ненужное на ничего, оставляя нужное.
Если адреса ячеек постоянны - не нужно искать, всё проще.
2. Легко кодом:
[vba]
Код
Sub tt()
With ActiveSheet.UsedRange: .Value = .Value: End With
End Sub
[/vba]

По дополнению - можно, но зачем?


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
Сообщение1. Ищем ячейку по известному значению (например где есть "Data eliberarii / Data livrarii : "), берём всё значение, из него выбираем последнее слово, или заменяем известное ненужное на ничего, оставляя нужное.
Если адреса ячеек постоянны - не нужно искать, всё проще.
2. Легко кодом:
[vba]
Код
Sub tt()
With ActiveSheet.UsedRange: .Value = .Value: End With
End Sub
[/vba]

По дополнению - можно, но зачем?

Автор - Hugo
Дата добавления - 13.06.2014 в 11:25
Xaden Дата: Пятница, 13.06.2014, 11:36 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
По сути это мой скромный код, на копирование с одного файла в другой, как видите у меня копируются ячейки, но проблема возникает в том, что в файле откуда я копирую есть ссылки на формулы с БД и объединенные ячейки. Вот и думаю просто как можно сделать, что бы не возникало проблем при копирование в другой фаил.
И да адрес ячейки будет постоянным, я просто не очень понимаю как мне ваш код приспособить к моему имеющемуся.

[vba]
Код
Sub Кнопка3_Щелчок()

Dim wb1 As Object, wb2 As Object
Dim ra As Range: Application.ScreenUpdating = False

Set wb1 = Windows("prn029NN1.xlsx").ActiveSheet
Set wb2 = Windows("Книга1.xls").ActiveSheet

Application.ScreenUpdating = False
wb1.Range("D12").Copy wb2.Range("B1")
wb1.Range("L10").Copy wb2.Range("F1")
wb1.Range("D7").Copy wb2.Range("J1")
wb1.Range("L50").Copy wb2.Range("L1")
wb1.Range("E18:E" & wb1.Cells(wb1.Rows.Count, 5).End(xlUp).Row).Copy wb2.Range("F3")
wb1.Range("G18:G" & wb1.Cells(wb1.Rows.Count, 5).End(xlUp).Row).Copy wb2.Range("H3")
wb1.Range("F18:F" & wb1.Cells(wb1.Rows.Count, 5).End(xlUp).Row).Copy wb2.Range("G3")
wb1.Range("Q18:Q" & wb1.Cells(wb1.Rows.Count, 5).End(xlUp).Row).Copy wb2.Range("E3")
wb1.Range("Q18:Q" & wb1.Cells(wb1.Rows.Count, 5).End(xlUp).Row).Copy wb2.Range("E3")
wb1.Range("L18:L" & wb1.Cells(wb1.Rows.Count, 5).End(xlUp).Row).Copy wb2.Range("L3")
wb1.Range("K18:K" & wb1.Cells(wb1.Rows.Count, 5).End(xlUp).Row).Copy wb2.Range("K3")
wb1.Range("I18:I" & wb1.Cells(wb1.Rows.Count, 5).End(xlUp).Row).Copy wb2.Range("J3")
wb1.Range("J18:J" & wb1.Cells(wb1.Rows.Count, 5).End(xlUp).Row).Copy wb2.Range("I3")
Application.ScreenUpdating = True

End Sub
[/vba]


Сообщение отредактировал Xaden - Пятница, 13.06.2014, 11:38
 
Ответить
СообщениеПо сути это мой скромный код, на копирование с одного файла в другой, как видите у меня копируются ячейки, но проблема возникает в том, что в файле откуда я копирую есть ссылки на формулы с БД и объединенные ячейки. Вот и думаю просто как можно сделать, что бы не возникало проблем при копирование в другой фаил.
И да адрес ячейки будет постоянным, я просто не очень понимаю как мне ваш код приспособить к моему имеющемуся.

[vba]
Код
Sub Кнопка3_Щелчок()

Dim wb1 As Object, wb2 As Object
Dim ra As Range: Application.ScreenUpdating = False

Set wb1 = Windows("prn029NN1.xlsx").ActiveSheet
Set wb2 = Windows("Книга1.xls").ActiveSheet

Application.ScreenUpdating = False
wb1.Range("D12").Copy wb2.Range("B1")
wb1.Range("L10").Copy wb2.Range("F1")
wb1.Range("D7").Copy wb2.Range("J1")
wb1.Range("L50").Copy wb2.Range("L1")
wb1.Range("E18:E" & wb1.Cells(wb1.Rows.Count, 5).End(xlUp).Row).Copy wb2.Range("F3")
wb1.Range("G18:G" & wb1.Cells(wb1.Rows.Count, 5).End(xlUp).Row).Copy wb2.Range("H3")
wb1.Range("F18:F" & wb1.Cells(wb1.Rows.Count, 5).End(xlUp).Row).Copy wb2.Range("G3")
wb1.Range("Q18:Q" & wb1.Cells(wb1.Rows.Count, 5).End(xlUp).Row).Copy wb2.Range("E3")
wb1.Range("Q18:Q" & wb1.Cells(wb1.Rows.Count, 5).End(xlUp).Row).Copy wb2.Range("E3")
wb1.Range("L18:L" & wb1.Cells(wb1.Rows.Count, 5).End(xlUp).Row).Copy wb2.Range("L3")
wb1.Range("K18:K" & wb1.Cells(wb1.Rows.Count, 5).End(xlUp).Row).Copy wb2.Range("K3")
wb1.Range("I18:I" & wb1.Cells(wb1.Rows.Count, 5).End(xlUp).Row).Copy wb2.Range("J3")
wb1.Range("J18:J" & wb1.Cells(wb1.Rows.Count, 5).End(xlUp).Row).Copy wb2.Range("I3")
Application.ScreenUpdating = True

End Sub
[/vba]

Автор - Xaden
Дата добавления - 13.06.2014 в 11:36
Xaden Дата: Пятница, 13.06.2014, 11:58 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Извиняюсь, заработался и не внимательно прочитал ваш код, это код по моему дополнению, спасибо.
 
Ответить
СообщениеИзвиняюсь, заработался и не внимательно прочитал ваш код, это код по моему дополнению, спасибо.

Автор - Xaden
Дата добавления - 13.06.2014 в 11:58
Xaden Дата: Пятница, 13.06.2014, 12:03 | Сообщение № 12
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
1. Ищем ячейку по известному значению (например где есть "Data eliberarii / Data livrarii : "), берём всё значение, из него выбираем последнее слово, или заменяем известное ненужное на ничего, оставляя нужное.
Если адреса ячеек постоянны - не нужно искать, всё проще.


Если Вас не затруднит, можно один пример к любой из ячеек? где скопировать надо только нужное.
 
Ответить
Сообщение
1. Ищем ячейку по известному значению (например где есть "Data eliberarii / Data livrarii : "), берём всё значение, из него выбираем последнее слово, или заменяем известное ненужное на ничего, оставляя нужное.
Если адреса ячеек постоянны - не нужно искать, всё проще.


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

Автор - Xaden
Дата добавления - 13.06.2014 в 12:03
Xaden Дата: Пятница, 13.06.2014, 16:37 | Сообщение № 13
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Всем спасибо, вроде как разобрался.
 
Ответить
СообщениеВсем спасибо, вроде как разобрался.

Автор - Xaden
Дата добавления - 13.06.2014 в 16:37
Hugo Дата: Пятница, 13.06.2014, 17:04 | Сообщение № 14
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3250
Репутация: 707 ±
Замечаний: 0% ±

2019
Чтоб не копировались формулы, а только значения - или копируйте "приравниванием" вроде [a1]=[b2] (или через массив сразу все смежные ячейки), или копируйте спецвставкой только значений/форматов (запишите рекордером).


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеЧтоб не копировались формулы, а только значения - или копируйте "приравниванием" вроде [a1]=[b2] (или через массив сразу все смежные ячейки), или копируйте спецвставкой только значений/форматов (запишите рекордером).

Автор - Hugo
Дата добавления - 13.06.2014 в 17:04
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование массива данных с одного файла в другой (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!