Страницы: 1
RSS
Копирование строк из одного файла и вставка в строку под данными в другой
 
Здравствуйте.
Я совершенно не разбираюсь в макросах, не могли бы вы поделиться?
Необходимо копировать строки из одного файла, в конец другого
 
Максим Петрович,  вот из это слепите макрос в соответствии с вашими данными и пожеланиями
3 способа копирования ячеек с помощью VBA макроса
Как найти последнюю строку, столбец и ячейку в Excel с помощью VBA
Не бойтесь совершенства. Вам его не достичь.
 
копировать получилось, но не получилось вставить в конец другого файла
 
Максим Петрович, вы какую помощь ожидаете? теоретическую я вам оказал - выше как определить последнюю заполненную ячейку + к ней прибавить 1  и вставить...
практическую помощь - читайте правила там о файле примере есть.
Не бойтесь совершенства. Вам его не достичь.
 
Код
'Найти последнюю не пустую ячейку в столбце А    
LastRow = Cells(Rows.Count, 1).End(xlUp).Row 'где 1 это столбец А, 2 - будет столбец В, 3 будет столбец С

Ячейка Cells(LastRow + 1, "A") - будет первой пустой ячейкой под данными, которые уже есть на листе. В неё и вставляйте данные
Изменено: New - 25.11.2020 12:20:34
 
Код
Sub asdasd()
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
Workbooks("1.xlsx").Worksheets("Sheet1").Range("A2").Copy Workbooks("2.xlsx").Worksheets("Sheet1").Range("Cells(LastRow)")

End Sub

почему то ошибка
 
ерунда написана, поэтому и ошибка
Код
Workbooks("1.xlsx").Worksheets("Sheet1").Range("A2").Copy Workbooks("2.xlsx").Worksheets("Sheet1").Cells(LastRow+1, А в какую колонку?)
и вы уверены, что LastRow определилась в том, файле, листе, колонке, которые вам нужны???
Изменено: Ігор Гончаренко - 25.11.2020 14:44:49
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
да мне вообще нужно чисто строки копировать, столбцы индинтичны
вот файлы пример.
необходимо все строки начиная со второй, скопировать и 1.xlsx в 2.xlsx
 
Цитата
Максим Петрович написал:
да мне вообще нужно чисто строки копировать
а копируете ячейку А2
Код
....Range("A2").Copy
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
знаю, пытаюсь хоть с чего то начать...
 
Цитата
Максим Петрович написал:
необходимо все строки начиная со второй, скопировать и 1.xlsx в 2.xlsx
эта фраза не позволяет сесть и написать макрос, который выполнит указанное действие, потому что сформулирована вообще, а программирование это что-то очень конкретное
известно что у файлов одинаковые шапки таблиц
"из файла 1 все строки, начиная с второй в файл 2", отлично!
из этой фразы понимаем что шапка занимает одну первую строку (видимо и там и там)
а КУДА копировать в файл 2? КУДА????
1. в конец таблицы, за существующими строками?
2. сразу под шапку удалив все существующие?
это два очень разных действия, и если не написано что делать, результаты работы макроса могут быть от неожиданных или совершенно плачевных!

и это только начало:
1. файл2 где искать? (знаем только имя и ничего более)
2. скопировали. что делаем с файлом приемником? сохранили и закрыли, оставили как есть (пользователь будет закрывать Excel увидит окно-предупреждение: файл 2.xlsx не сохранен, Сохранить, Не Сохранять, Отмена? не дочитает его толком, не вникая что за 2.xlsx, нажмет не сохранять и все что вы копировали - коту под хвост!
программирование это наличие четкой и понятной (во всех деталях) задачи, а макрос - это точное выполнение все, что в нем написано

когда задача ни о чем, точно такой же получится и макрос - ни какой!
Изменено: Ігор Гончаренко - 25.11.2020 15:29:32
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
прошу прощения.
Я опечатался, конечно же иЗ 1го файла во второй.
Путь до второго файла я укажу, ну пусть он будет C:\1\2.xlsx
Копировать начиная все строчки начиная со 2ой из файла 1.xlsx в конец файла 2.xlsx, где уже есть данные, нужно дописать в конце ничего не удаляя.
В идеале файл 2, вообще не должен открываться, но при этом данные должны быть записаны или сохранили и закрыли
 
Петрович, извините, в файлах может быть много листов
с 1 с какого листа в 2 на  какой лист?
это не назойливость, это уточнение условий выполнения макроса  
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, 1 лист будет, и в 1 и во 2 файле
 
добавьте в 1 модуль
положите в него этот макрос:
Код
Sub RowsCopy22()
  Const fn$ = "d:\2.xlsx"
  Dim wb1 As Workbook, wb2 As Workbook, r&
  Set wb2 = GetObject(fn)
  r = Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row
  If r > 1 Then
    Worksheets(1).Range("2:" & r).Copy _
    wb2.Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1)
    wb2.Save
  End If
  wb2.Close
End Sub
и выполните его. обратите внимание на путь к 2
Изменено: Ігор Гончаренко - 25.11.2020 17:04:43
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, спасибо, все отлично , все работает.
а что нужно изменить в вашем коде, что бы я мог копировать определенные столбы? ну это так, на будущее, если трудоемко, то не нужно.
допустим из 1 файла скопировать все строки начиная со второй, но только диапазон столбцов C:Y , в конец файла 2, так же ничего не перезаписывая
 
Цитата
только диапазон столбцов C:Y
Код
 Worksheets(1).Range("C2:Y" & r).Copy _
    wb2.Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1)
 
и снова - удар в штангу!
копировать куда? в какую строку понятно, а в какой столбец это все пристроить? в А? в С? ваш вариант?
и чтобы 2 раза не вставать:
по каким каким колонкам в 1 и 2 определять последнюю строку?
Изменено: Ігор Гончаренко - 25.11.2020 17:03:10
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
а в какой столбец это все пристроить? в А? в С? ваш вариант?
и С в С. из D в D  и т.д., т.е. столбцы совпадут, просто сделать срез так сказать
 
и 2-й вопрос: по каким колонкам в 1 и 2 определять последнюю строку может по С и там и там?
судя по всему колонка А в файле 2 может быть вообще не заполнена
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко,по А, она всегда будет заполнена
 
мне все равно, а вам явно виднее
Код
Sub RowsCopy22()
  Const fn$ = "d:\2.xlsx"
  Dim wb1 As Workbook, wb2 As Workbook, r&
  Set wb2 = GetObject(fn)
  r = Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row
  If r > 1 Then
    Worksheets(1).Range("C2:Y" & r).Copy _
    wb2.Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1,3)
    wb2.Save
  End If
  wb2.Close
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко,спасибо большое.
А возможно данный скрипт преобразовать в .vbs? при условии что пути до 1го и 2го не будет изменяться
 
Ігор Гончаренко,Добрый день.
подскажите пожалуйста, ваш скрипт прекрасно работает, но при копирование он не учитывает форматирование, можно как то исправить?
 
интересно что могло не скопироваться командой Copy?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Наверх