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

Вход

Регистрация

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

 

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

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование данных из одного файла в другой (Макросы/Sub)
Копирование данных из одного файла в другой
emkub Дата: Вторник, 20.09.2016, 21:46 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 87
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте!
Объединение эксель-файлов - это здорово, но... нет предела совершенству :D
Друзья, помогите организовать такой макрос:
нужно из текущего открытого документа скопировать все данные, кроме первой строки и в ставить их по адресу D:\XXX\09(номер текущего месяца)\общ\Документ.xlsx
Данные должны добавляться в конец "Документ.xlsx", а не заменяться. таблица всегда однотипна
Не судите строго :) работа с отдельными книгами и листами пока ещё вызывает затруднения...
К сообщению приложен файл: 20.09.16_3.xlsx(74Kb)
 
Ответить
СообщениеЗдравствуйте!
Объединение эксель-файлов - это здорово, но... нет предела совершенству :D
Друзья, помогите организовать такой макрос:
нужно из текущего открытого документа скопировать все данные, кроме первой строки и в ставить их по адресу D:\XXX\09(номер текущего месяца)\общ\Документ.xlsx
Данные должны добавляться в конец "Документ.xlsx", а не заменяться. таблица всегда однотипна
Не судите строго :) работа с отдельными книгами и листами пока ещё вызывает затруднения...

Автор - emkub
Дата добавления - 20.09.2016 в 21:46
lebensvoll Дата: Вторник, 20.09.2016, 21:56 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 645
Репутация: 2 ±
Замечаний: 60% ±

Excel 2010
emkub,
Цитата
нужно из текущего открытого документа скопировать все данные, кроме первой строки
я как раз таки поднимал похожую тему и аж набралось три листа обсуждений и понимания этого действия (((( тяжело но сделать можно.
My WebPage
там как раз за копирование с одного листа на множество других листов (с разными параметрами и столбцами).
А вот чтоб в нужный вам файл это можно путь и самому попытаться прописать через ЗАПИСЬ МАКРОСА потом его вытянуть и вставить в тот код с копированием.


Кто бы ты ни был, мир в твоих руках
 
Ответить
Сообщениеemkub,
Цитата
нужно из текущего открытого документа скопировать все данные, кроме первой строки
я как раз таки поднимал похожую тему и аж набралось три листа обсуждений и понимания этого действия (((( тяжело но сделать можно.
My WebPage
там как раз за копирование с одного листа на множество других листов (с разными параметрами и столбцами).
А вот чтоб в нужный вам файл это можно путь и самому попытаться прописать через ЗАПИСЬ МАКРОСА потом его вытянуть и вставить в тот код с копированием.

Автор - lebensvoll
Дата добавления - 20.09.2016 в 21:56
emkub Дата: Вторник, 20.09.2016, 21:59 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 87
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Читал вашу тему, но честно говоря, практически ничего не понял, что вы хотели сделать :)
Сейчас буду смотреть внимательнее.
А записью макроса пробую всегда в первую очередь. Но тут и близко не то.


Сообщение отредактировал emkub - Вторник, 20.09.2016, 22:04
 
Ответить
СообщениеЧитал вашу тему, но честно говоря, практически ничего не понял, что вы хотели сделать :)
Сейчас буду смотреть внимательнее.
А записью макроса пробую всегда в первую очередь. Но тут и близко не то.

Автор - emkub
Дата добавления - 20.09.2016 в 21:59
lebensvoll Дата: Вторник, 20.09.2016, 22:12 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 645
Репутация: 2 ±
Замечаний: 60% ±

Excel 2010
Скажу откровенно по опыту. Вы выкладывайте ваши старания как получилось. Народ вас подправит (я в этом уверен). А вот если создали тему и ждете когда за вас ее кто сделает, то вам будут предлагать перейти во фриланс.
Тем самым (если вы хоть как то стараетесь и пытаетесь понять) народ это видит и поверьте помогает (ну иногда и ругает что подтормаживаешь ))))).
Так что не стесняйтесь выкладывайте ваши старания в свет. Вам обязательно помогут скорректируют ваши действия
 
Ответить
СообщениеСкажу откровенно по опыту. Вы выкладывайте ваши старания как получилось. Народ вас подправит (я в этом уверен). А вот если создали тему и ждете когда за вас ее кто сделает, то вам будут предлагать перейти во фриланс.
Тем самым (если вы хоть как то стараетесь и пытаетесь понять) народ это видит и поверьте помогает (ну иногда и ругает что подтормаживаешь ))))).
Так что не стесняйтесь выкладывайте ваши старания в свет. Вам обязательно помогут скорректируют ваши действия

Автор - lebensvoll
Дата добавления - 20.09.2016 в 22:12
emkub Дата: Вторник, 20.09.2016, 22:21 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 87
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Даже мне видно, что мои "старания" выглядят полнейшей ахинеей :( стыдно такое выкладывать.
Ничего, я с этим только третий день воюю. Через месяцок вид будет лучше :)
Однако, ваш макрос с пояснениями подталкивает в нужную сторону.


Сообщение отредактировал emkub - Вторник, 20.09.2016, 22:38
 
Ответить
СообщениеДаже мне видно, что мои "старания" выглядят полнейшей ахинеей :( стыдно такое выкладывать.
Ничего, я с этим только третий день воюю. Через месяцок вид будет лучше :)
Однако, ваш макрос с пояснениями подталкивает в нужную сторону.

Автор - emkub
Дата добавления - 20.09.2016 в 22:21
Manyasha Дата: Вторник, 20.09.2016, 22:55 | Сообщение № 6
Группа: Модераторы
Ранг: Старожил
Сообщений: 1589
Репутация: 669 ±
Замечаний: 0% ±

Excel 2007, 2010
emkub, Здравствуйте, например, так можно:
[vba]
Код
Sub copyData()
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
        .DisplayAlerts = False
    End With
    Dim sh1 As Worksheet, wbOpen As Workbook
    Dim lr1 As Long, lc1 As Long, lr2 As Long
    Dim wbPath As String
    Set sh1 = ThisWorkbook.Sheets(1)
    'Путь книге, в которую копируем
    wbPath = "D:\XXX\" & Format(Month(Now), "00") & "\общ\Документ.xlsx"
    'последняя строка в исходной книге (по 1-му столбцу)
    lr1 = sh1.Cells(Rows.Count, 1).End(xlUp).Row
    'последний столбец в исходной книге (по 1-й строке)
    lc1 = sh1.Cells(1, Columns.Count).End(xlToLeft).Column
    
    Set wbOpen = Workbooks.Open(wbPath)
    With wbOpen.Sheets(1)
        'последняя строка в новой книге (wbOpen) по 1-му столбцу +1
        lr2 = .Cells(Rows.Count, 1).End(xlUp).Row + 1
        'копируем
        Range(sh1.Cells(2, 1), sh1.Cells(lr1, lc1)).Copy Range(.Cells(lr2, 1), .Cells(lr2 + lr1 - 1, lc1))
    End With
    wbOpen.Close True
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
        .DisplayAlerts = True
    End With
End Sub
[/vba]


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеemkub, Здравствуйте, например, так можно:
[vba]
Код
Sub copyData()
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
        .DisplayAlerts = False
    End With
    Dim sh1 As Worksheet, wbOpen As Workbook
    Dim lr1 As Long, lc1 As Long, lr2 As Long
    Dim wbPath As String
    Set sh1 = ThisWorkbook.Sheets(1)
    'Путь книге, в которую копируем
    wbPath = "D:\XXX\" & Format(Month(Now), "00") & "\общ\Документ.xlsx"
    'последняя строка в исходной книге (по 1-му столбцу)
    lr1 = sh1.Cells(Rows.Count, 1).End(xlUp).Row
    'последний столбец в исходной книге (по 1-й строке)
    lc1 = sh1.Cells(1, Columns.Count).End(xlToLeft).Column
    
    Set wbOpen = Workbooks.Open(wbPath)
    With wbOpen.Sheets(1)
        'последняя строка в новой книге (wbOpen) по 1-му столбцу +1
        lr2 = .Cells(Rows.Count, 1).End(xlUp).Row + 1
        'копируем
        Range(sh1.Cells(2, 1), sh1.Cells(lr1, lc1)).Copy Range(.Cells(lr2, 1), .Cells(lr2 + lr1 - 1, lc1))
    End With
    wbOpen.Close True
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
        .DisplayAlerts = True
    End With
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 20.09.2016 в 22:55
emkub Дата: Вторник, 20.09.2016, 23:28 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 87
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Заменил
[vba]
Код
Set sh1 = ThisWorkbook.Sheets(1)
[/vba] на
[vba]
Код
Set sh1 = ActiveWorkbook.Sheets(1)
[/vba], т.к. макрос живёт в одной книге, а работает в другой.
И заработала как надо !!! :)
Manyasha, одно спасибо за сам код! И отдельное спасибо - за комментарии в нём!
Когда оно написано и расписано - кажется ТАК всё легко и понятно. А когда сам мудришь...ммм, не так понятно...
 
Ответить
СообщениеЗаменил
[vba]
Код
Set sh1 = ThisWorkbook.Sheets(1)
[/vba] на
[vba]
Код
Set sh1 = ActiveWorkbook.Sheets(1)
[/vba], т.к. макрос живёт в одной книге, а работает в другой.
И заработала как надо !!! :)
Manyasha, одно спасибо за сам код! И отдельное спасибо - за комментарии в нём!
Когда оно написано и расписано - кажется ТАК всё легко и понятно. А когда сам мудришь...ммм, не так понятно...

Автор - emkub
Дата добавления - 20.09.2016 в 23:28
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование данных из одного файла в другой (Макросы/Sub)
Страница 1 из 11
Поиск:

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