Страницы: 1
RSS
Макрос. Копирование данных из одного листа в конец другого
 
Помогите, пожалуйста! Я начинающий пользовалель макросами с данной задачей справиться не могу.
Задача. Скопировать данные из Sheet2 (начиная с 2й строки) в под данные в Sheet1. Количество строк меняется на каждом из листров.
Я попробавала такое вариант:
Код
Sub Macro2()
Sheets("Sheet2").[A1].CurrentRegion.Offset(1).Copy Sheets("Sheet1").[A1].End(xlDown)(2)
End Sub

Но столкнулась с проблемой. На листе Sheet2 есть пустые колонки. Макрос копирует данные до первой пустой колонки, а нужно копировать всю строку
Изменено: Мария - - 08.05.2019 21:30:07
 
Здравствуйте.
Может, нужно  как-то так? (уходим от СurrentRegion, используем UsedRange)
Код
Worksheets("Sheet2").UsedRange.Offset(1, 0).Copy Worksheets("Sheet1").[A1].End(xlDown)(2)
Кому решение нужно - тот пример и рисует.
 
да, работает.
А если вставить нужно в другой файл?
 
Если файл открытый - пишем макрорекордером макрос копирования и вставки в другой отрытый файл, потом корректируем вышеуказанный код (добавляем в КУДА еще имя файла).
Если закрытый - ко всему перечисленному надо добавить еще код открытия файла с нужным именем, расположенным по определенному адресу.
Кому решение нужно - тот пример и рисует.
 
простите, пожалуйста, за необразованность  :oops:
мне как раз 1й вариант подходит. А как добавить файл?

Вот что получилось при записи Макроса
Код
    Sheets("Invoices").Select
    Range("A2:I11").Select
    Selection.Copy
    Windows("FWS BDF.xlsx").Activate
    Sheets("Invoices").Select
    Range("A23276").Select
    ActiveSheet.Paste    

вот так я исправила:
Код
    Worksheets("Invoices").UsedRange.Offset(1, 0).Copy    
    Windows("FWS BDF.xlsx").Activate
    Sheets("Invoices").Select [A1].End(xlDown)(2)

не работает. Точнее не вставляет :(
Чувствую себя, мякго сказать... <нецинзура> ...  :(  
Изменено: Мария - - 08.05.2019 21:25:14
 
Добрый день! Правильно ли я понял нужно содержимое с листа "Invoices" вставить в другой файл ? Если да то на какой лист?
 
Да, все верно! И тот лист, на который нужно вставить данные, тоже называется Invoices.
 
попробуйте так. Только путь к файлу ("B:\111\FWS BDF.xlsx") пропишите свой
Код
Sub Macro1()
Worksheets("Invoices").UsedRange.Offset(1, 0).Copy Workbooks.Open Filename:="B:\111\FWS BDF.xlsx".Worksheets("Invoices").[A1].End(xlDown)
End Sub
 
Не выходит. Пишет "Compile error: Expected: end of statement". При это выделяет "Filename"
Мой путь (C:\Users\Maria.Fokina\Desktop\Invoices for Reports)
 
Если  локаль русская, то Desktop = Рабоий стол, Users = Пользователи... но макрос такого равенства не понимает и твердит, что нужного пути нет.
Разместите нужное в корне диска С. Или на другом (не системном),  диске.

Мария -,  на будущее: оформляйте код в сообщениях с помощью кнопки <...>
 
Цитата
vikttur написал:
Разместите нужное в корне диска С. Или на другом (не системном),  диске.
Малыш, Медведи протестуют!!!!

http://scriptcoding.ru/2013/06/27/wscript-shell-specialfolders/
Код
CreateObject("WScript.Shell").SpecialFolders.item("Desktop") &Application.pathseparator & "Invoices for Reports"
По вопросам из тем форума, личку не читаю.
 
Протестующим медведям.
В русской локали соответствующая часть пути может отображаться как Пользователи, но в коде подавай ему Users. Когда-то сам напоролся, сейчас иногда  обращаются с подобной проблемой.
 
Цитата
vikttur написал:
соответствующая часть пути может отображаться как Пользователи, но в коде подавай ему Users.
Ну это по тому что реальный путь отличается от виртуального, который отображается и используется через символическую ссылку, при этом отображение зависит от языка локализации интерфейса и на одном компе, у разных пользователей с разной локалью, будут разные с виду пути. По факту все каталоги имеют английские имена.

Чтоб не думать лучше использовать или переменные окружения, или описанное выше, для определения таких каталогов. В общем и не факт что профиль с пользовательскими каталогами размещен на привычном месте. В своей практике я и переносил пользовательские данные на другой диск и использовал перенаправление их на сетевые ресурсы …..  В этом случае просто c:\users …. может не подойти совсем.
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх