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

Вход

Регистрация

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

 

= Мир MS Excel/(excel_2010_VBA)Копирование из одной книги в другую - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
(excel_2010_VBA)Копирование из одной книги в другую
lapin9126 Дата: Пятница, 23.10.2015, 04:36 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 38
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Хорошего дня всем. Есть две книги с двумя листами в каждой. Как выделить в книге "откуда", на листе "1" все заполненные строки (или ячейки, если это проще), но кроме первой строки, и скопировать в книгу "куда", на лист "1", (в ней уже есть информация, после которой нужно скопировать), ну и со вторым листом поступить также. Забыл уточнить книга "откуда" и "куда" не лежат в одной папке. Есть макрос, можно как-нибудь доработать?
[vba]
Код
Sub КопияВкнигу()
Dim Исходная As Excel.Workbook, Конечная As Excel.Workbook
Set Исходная = ActiveWorkbook 'открываем книгу
Set Конечная = Workbooks.Open("C:\Users\User\Desktop\Новая папка\куда.xlsx")
lastUsedRowInMyRange = Sheets("1").Cells(Sheets("1").Rows.Count, 3).End(xlUp).Row
Исходная.Worksheets("1").Range("B2").CurrentRegion.Copy Конечная.Worksheets("1").Cells(Rows.Count, "B").End(xlUp)(3, 0)
Конечная.Worksheets("1").Rows.PasteSpecial_'здесь копирует в книгу, но ругается
Operation = xlPasteSpecialOperationAdd
Конечная.Close SaveChanges:=True
End Sub
[/vba]
К сообщению приложен файл: 1258636.xlsx (17.5 Kb) · 8270960.xlsx (18.1 Kb)


Сообщение отредактировал lapin9126 - Пятница, 23.10.2015, 09:47
 
Ответить
СообщениеХорошего дня всем. Есть две книги с двумя листами в каждой. Как выделить в книге "откуда", на листе "1" все заполненные строки (или ячейки, если это проще), но кроме первой строки, и скопировать в книгу "куда", на лист "1", (в ней уже есть информация, после которой нужно скопировать), ну и со вторым листом поступить также. Забыл уточнить книга "откуда" и "куда" не лежат в одной папке. Есть макрос, можно как-нибудь доработать?
[vba]
Код
Sub КопияВкнигу()
Dim Исходная As Excel.Workbook, Конечная As Excel.Workbook
Set Исходная = ActiveWorkbook 'открываем книгу
Set Конечная = Workbooks.Open("C:\Users\User\Desktop\Новая папка\куда.xlsx")
lastUsedRowInMyRange = Sheets("1").Cells(Sheets("1").Rows.Count, 3).End(xlUp).Row
Исходная.Worksheets("1").Range("B2").CurrentRegion.Copy Конечная.Worksheets("1").Cells(Rows.Count, "B").End(xlUp)(3, 0)
Конечная.Worksheets("1").Rows.PasteSpecial_'здесь копирует в книгу, но ругается
Operation = xlPasteSpecialOperationAdd
Конечная.Close SaveChanges:=True
End Sub
[/vba]

Автор - lapin9126
Дата добавления - 23.10.2015 в 04:36
Pelena Дата: Пятница, 23.10.2015, 12:27 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19409
Репутация: 4558 ±
Замечаний: ±

Excel 365 & Mac Excel
Может так подойдёт
[vba]
Код
Sub КопияВкнигу()
    Dim Исходная As Excel.Workbook, Конечная As Excel.Workbook
    Set Исходная = ThisWorkbook
    Set Конечная = Workbooks.Open("C:\Users\User\Desktop\Новая папка\куда.xlsx")    'открываем книгу
    For i = 1 To Исходная.Sheets.Count
        lastUsedRowInMyRange = Конечная.Sheets(i).Range("A1").CurrentRegion.Rows.Count
        nrow = Исходная.Sheets(i).Range("A1").CurrentRegion.Rows.Count
        Исходная.Sheets(i).Range("B2").CurrentRegion.Offset(1).Resize(nrow - 1).Copy Конечная.Sheets(i).Range("A" & lastUsedRowInMyRange + 1)
    Next i
    Конечная.Close SaveChanges:=True
End Sub
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеМожет так подойдёт
[vba]
Код
Sub КопияВкнигу()
    Dim Исходная As Excel.Workbook, Конечная As Excel.Workbook
    Set Исходная = ThisWorkbook
    Set Конечная = Workbooks.Open("C:\Users\User\Desktop\Новая папка\куда.xlsx")    'открываем книгу
    For i = 1 To Исходная.Sheets.Count
        lastUsedRowInMyRange = Конечная.Sheets(i).Range("A1").CurrentRegion.Rows.Count
        nrow = Исходная.Sheets(i).Range("A1").CurrentRegion.Rows.Count
        Исходная.Sheets(i).Range("B2").CurrentRegion.Offset(1).Resize(nrow - 1).Copy Конечная.Sheets(i).Range("A" & lastUsedRowInMyRange + 1)
    Next i
    Конечная.Close SaveChanges:=True
End Sub
[/vba]

Автор - Pelena
Дата добавления - 23.10.2015 в 12:27
lapin9126 Дата: Пятница, 23.10.2015, 14:07 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 38
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо, но выдает ошибку.
[sub]
Исходная.Sheets(i).Range("B2").CurrentRegion.Offset(1).Resize(nRow - 1).Copy Конечная.Sheets(i).Range("A" & lastUsedRowInMyRange + 1)
Ошибка VBA


Сообщение отредактировал lapin9126 - Пятница, 23.10.2015, 14:10
 
Ответить
СообщениеСпасибо, но выдает ошибку.
[sub]
Исходная.Sheets(i).Range("B2").CurrentRegion.Offset(1).Resize(nRow - 1).Copy Конечная.Sheets(i).Range("A" & lastUsedRowInMyRange + 1)
Ошибка VBA

Автор - lapin9126
Дата добавления - 23.10.2015 в 14:07
Pelena Дата: Пятница, 23.10.2015, 14:19 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19409
Репутация: 4558 ±
Замечаний: ±

Excel 365 & Mac Excel
Я проверяла на этих файлах. Файл куда.xlsx был на рабочем столе.
Проверила ещё раз - работает
К сообщению приложен файл: Excel.rar (70.0 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЯ проверяла на этих файлах. Файл куда.xlsx был на рабочем столе.
Проверила ещё раз - работает

Автор - Pelena
Дата добавления - 23.10.2015 в 14:19
lapin9126 Дата: Пятница, 23.10.2015, 14:52 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 38
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
А если листы будут иметь конкретное имя 1-"ЕРН", 2-"ССТ", названия в кирилице.
 
Ответить
СообщениеА если листы будут иметь конкретное имя 1-"ЕРН", 2-"ССТ", названия в кирилице.

Автор - lapin9126
Дата добавления - 23.10.2015 в 14:52
Pelena Дата: Пятница, 23.10.2015, 15:21 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 19409
Репутация: 4558 ±
Замечаний: ±

Excel 365 & Mac Excel
Имена листов не задействованы. Обращение идёт по индексам


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеИмена листов не задействованы. Обращение идёт по индексам

Автор - Pelena
Дата добавления - 23.10.2015 в 15:21
lapin9126 Дата: Пятница, 23.10.2015, 15:27 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 38
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
А как задействовать имена? ОООООООООООчень надо. А ограничение по количеству строк есть, про сто во второй книге более 15000.


Сообщение отредактировал lapin9126 - Пятница, 23.10.2015, 15:47
 
Ответить
СообщениеА как задействовать имена? ОООООООООООчень надо. А ограничение по количеству строк есть, про сто во второй книге более 15000.

Автор - lapin9126
Дата добавления - 23.10.2015 в 15:27
Pelena Дата: Пятница, 23.10.2015, 15:43 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 19409
Репутация: 4558 ±
Замечаний: ±

Excel 365 & Mac Excel
Напишите вместо индексов имена. Только тогда не в цикле, а отдельно для каждого листа.
Или создайте массив имён и считывайте в цикле имена из массива.

Или опишите подробнее конечную цель и поясните, почему не походят индексы


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеНапишите вместо индексов имена. Только тогда не в цикле, а отдельно для каждого листа.
Или создайте массив имён и считывайте в цикле имена из массива.

Или опишите подробнее конечную цель и поясните, почему не походят индексы

Автор - Pelena
Дата добавления - 23.10.2015 в 15:43
lapin9126 Дата: Пятница, 23.10.2015, 17:24 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 38
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Индексы не подходят потому, что листы имеют конкретные имена 1-"ЕРН", 2-"ССТ", названия в кирилице.
 
Ответить
СообщениеИндексы не подходят потому, что листы имеют конкретные имена 1-"ЕРН", 2-"ССТ", названия в кирилице.

Автор - lapin9126
Дата добавления - 23.10.2015 в 17:24
RAN Дата: Пятница, 23.10.2015, 17:37 | Сообщение № 10
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Значит, ваша судьба - прописывать эти имена ручками. И лучше на кирилице. :)


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеЗначит, ваша судьба - прописывать эти имена ручками. И лучше на кирилице. :)

Автор - RAN
Дата добавления - 23.10.2015 в 17:37
lapin9126 Дата: Пятница, 23.10.2015, 17:56 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 38
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Да, уж без массива будет лучше, говорили мне в институте: "Учи бэйсик", я мы играли в трехмерный тетрис, на крутых тогда pc xt 386.


Сообщение отредактировал lapin9126 - Пятница, 23.10.2015, 18:34
 
Ответить
СообщениеДа, уж без массива будет лучше, говорили мне в институте: "Учи бэйсик", я мы играли в трехмерный тетрис, на крутых тогда pc xt 386.

Автор - lapin9126
Дата добавления - 23.10.2015 в 17:56
lapin9126 Дата: Суббота, 24.10.2015, 09:18 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 38
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Доброго дня, макрос рабочий, копирует в книгу не взирая на имена листов, но только в том случае, если макрос есть в книге, из которой производится копирование. Как бы избавиться от этого? Все разобрался ActiveWorkbook.


Сообщение отредактировал lapin9126 - Суббота, 24.10.2015, 09:32
 
Ответить
СообщениеДоброго дня, макрос рабочий, копирует в книгу не взирая на имена листов, но только в том случае, если макрос есть в книге, из которой производится копирование. Как бы избавиться от этого? Все разобрался ActiveWorkbook.

Автор - lapin9126
Дата добавления - 24.10.2015 в 09:18
  • Страница 1 из 1
  • 1
Поиск:

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