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

Вход

Регистрация

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

 

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

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

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

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

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


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

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

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


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

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

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

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

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


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

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

Excel 2010, 2016
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]


ЯД: 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
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 171
Репутация: 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
emkub Дата: Четверг, 02.02.2017, 01:51 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 171
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте, Марина!
Надеюсь увидите моё сообщение :)
Пытаюсь понять, как подправить ваш макрос, если тот файл, в который нужно копировать, уже открыт. Но что-то не разберусь... Макрос просто делает его активным и всё.
Помогите пожалуйста :)
 
Ответить
СообщениеЗдравствуйте, Марина!
Надеюсь увидите моё сообщение :)
Пытаюсь понять, как подправить ваш макрос, если тот файл, в который нужно копировать, уже открыт. Но что-то не разберусь... Макрос просто делает его активным и всё.
Помогите пожалуйста :)

Автор - emkub
Дата добавления - 02.02.2017 в 01:51
_Boroda_ Дата: Четверг, 02.02.2017, 09:50 | Сообщение № 9
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Марины на форуме с понедельника нет, попробую за нее (кстати, Евгений, обращаясь к конкретному человеку, Вы рискуете тем, что придется довольно долго его ждать).
В коде ничего не менял, кроме того, что нужно для работы с уже открытой книгой
[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
    Set sh1 = ThisWorkbook.Sheets(1)
    lr1 = sh1.Cells(Rows.Count, 1).End(xlUp).Row
    lc1 = sh1.Cells(1, Columns.Count).End(xlToLeft).Column
    Set wbOpen = Workbooks("Äîêóìåíò.xlsx")
    With wbOpen.Sheets(1)
        .Activate
        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
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
        .DisplayAlerts = True
    End With
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеМарины на форуме с понедельника нет, попробую за нее (кстати, Евгений, обращаясь к конкретному человеку, Вы рискуете тем, что придется довольно долго его ждать).
В коде ничего не менял, кроме того, что нужно для работы с уже открытой книгой
[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
    Set sh1 = ThisWorkbook.Sheets(1)
    lr1 = sh1.Cells(Rows.Count, 1).End(xlUp).Row
    lc1 = sh1.Cells(1, Columns.Count).End(xlToLeft).Column
    Set wbOpen = Workbooks("Äîêóìåíò.xlsx")
    With wbOpen.Sheets(1)
        .Activate
        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
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
        .DisplayAlerts = True
    End With
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 02.02.2017 в 09:50
emkub Дата: Четверг, 02.02.2017, 11:19 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 171
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо, Александр! Всё работает.
 
Ответить
СообщениеСпасибо, Александр! Всё работает.

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

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