Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/312: Рейтинг темы: голосов - 312, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 28.04.2011
Сообщений: 60
1

Копирование строки из одной книги в другую

05.10.2011, 17:50. Показов 62790. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Необходимо скопировать строку под номером 10 с активного листа активной книги, открыть книгу например С:\test.xls (с одним листом) и вставить скопированные данные в 5 строку.
Помогите пожалуйста. Темы о копировании строк на форуме нашел, но не разобрался что к чему.
Заранее благодарен.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.10.2011, 17:50
Ответы с готовыми решениями:

Копирование строки из одной книги в другую на ту же строку
Добрый день народ!В макросе новичок! Нужно сделать так чтобы из одной книги определенную строку...

Копирование данных из одной книги в другую
Всем привет! Мне нужно скопировать данные из 4 таблиц из одной книги в одну общую таблицу в...

Копирование данных из одной книги в другую
Добрый день, форумчане! Продолжаю писать свой макрос и опять не получается некоторая операция. ...

Копирование данных с одной книги в другую
Здравствуйте. Помогите пожалуйста с задачей, а именно: ко мне приходит файл с данными книга Б,...

19
Почетный модератор
21412 / 9146 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
05.10.2011, 18:38 2
Visual Basic
1
2
3
4
Dim I As Integer
For I = 1 To 20
Cells(5, I).Value = Cells(10, I).Value
Next I
Но это уже совсем по-самодельному

Хотя мне это нравится больше, чем
Visual Basic
1
2
3
4
Rows("10:10").Copy
Rows("5:5").Select
    ActiveSheet.Paste
Application.CutCopyMode = False
1
0 / 0 / 0
Регистрация: 28.04.2011
Сообщений: 60
05.10.2011, 18:43  [ТС] 3
я делал очень похоже, но на строку
Visual Basic
1
ActiveSheet.Paste
ругается, в чем причина не пойму...
0
Почетный модератор
21412 / 9146 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
05.10.2011, 18:45 4
Visual Basic
1
Rows("5:5").Select
Это присутствует?
1
0 / 0 / 0
Регистрация: 28.04.2011
Сообщений: 60
05.10.2011, 18:48  [ТС] 5
Присутствует, а ругается потому что нечего вставлять, значит не копирует оператор
Visual Basic
1
Rows("10:10").Copy
, может перед ним тоже поставить
Visual Basic
1
Rows("10:10").Select
Добавлено через 1 минуту
Выделило, но опять ничего не скопировало, буфер пустой
0
Почетный модератор
21412 / 9146 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
05.10.2011, 18:51 6
Прикрепил книгу
Вложения
Тип файла: xls Книга1.xls (23.5 Кб, 348 просмотров)
2
0 / 0 / 0
Регистрация: 28.04.2011
Сообщений: 60
06.10.2011, 10:23  [ТС] 7
В книге вижу что работает, а у меня почему то нет, ладно... утро вечера мудренее Спасибо за посильную помощь, завтра далее ковырять буду

Добавлено через 15 часов 18 минут
Вот собственно кусок кода:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
'открываем книгу
Workbooks.Open(incoming)
'копируем строку
        Rows("10:10").Select
        Rows("10:10").Copy
        'открываем сводный отчет
        Workbooks.Open (report)
        'выбираем номер начальной строки для поиска последней записи
        nss = 2
        'ищем последнюю запись
        Do While nss <> "1"
            If Range("B" & nss).Value <> "" Then
                'увеличиваем номер строки на 1
                nss = nss + 1
            Else
                'вставляем строку из буфера
                Rows("5:5").Select
                ActiveSheet.Paste
                'присваиваем переменной номера строки значение конца цикла
                nss = 1
            End If
        Loop
Для этого поста я присвоил статичную величину при вставке (5 строка), а вообще надо вставлять в строку nss.
В чем моя ошибка может быть?
0
Заблокирован
06.10.2011, 15:43 8
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub Процедура1()
'Обращаться с книгами будем через переменные
'(кода меньше писать и не промахнёшься мимо нужной книги)
Dim Исходная As Excel.Workbook, Конечная As Excel.Workbook
Dim nss As Long
Set Исходная = ActiveWorkbook
'открываем книгу
Set Конечная = Workbooks.Open("C:\Documents and Settings\Пользователь\Рабочий стол\Книга2.xlsx")
'копируем строку
        Исходная.Worksheets(1).Rows("10:10").Copy
        'выбираем номер начальной строки для поиска последней записи
        nss = 2
        'ищем последнюю запись
        Do While Конечная.Worksheets(1).Range("B" & nss).Value <> ""
            'увеличиваем номер строки на 1
            nss = nss + 1
        Loop
        'вставляем строку из буфера
        Конечная.Worksheets(1).Rows(nss).PasteSpecial
        Конечная.Close SaveChanges:=True
End Sub
1
0 / 0 / 0
Регистрация: 28.04.2011
Сообщений: 60
06.10.2011, 16:11  [ТС] 9
Так работает, спасибо!

Добавлено через 24 минуты
А ещё нюансик один остался... как добиться что бы происходило копирование только значений, а формулы не копировались в новый документ?
0
Заблокирован
06.10.2011, 16:17 10
Visual Basic
1
Конечная.Worksheets(1).Rows(nss).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
С помощью макрорекордера можно узнавать синтаксис VBA.
1
0 / 0 / 0
Регистрация: 28.04.2011
Сообщений: 60
06.10.2011, 16:48  [ТС] 11
Спасибо огромное, я просто не спец, сижу разбираюсь, второй день как с vba связался

Добавлено через 23 минуты
Цитата Сообщение от Busine2009 Посмотреть сообщение
С помощью макрорекордера можно узнавать синтаксис VBA.
...а что такое макрорекодер?
0
Заблокирован
06.10.2011, 17:01 12
nt_dmn,
Excel какого года у вас?
0
0 / 0 / 0
Регистрация: 28.04.2011
Сообщений: 60
06.10.2011, 17:04  [ТС] 13
Сейчас в 2007 сижу...
А не подскажете ещё где мне отключить оповещение при закрытии файлов "в буфере обмена осталось.. бла бла бла" Чет все настройки перерыл, нету...
0
Заблокирован
06.10.2011, 17:16 14
Цитата Сообщение от nt_dmn Посмотреть сообщение
...а что такое макрорекодер?
  1. Круглая кнопка - Параметры Excel - Основные - Показывать вкладку "Разработчик на ленте" - OK;
  2. вкладка Разработчик - группа Код - Запись макроса;
  3. проделайте какие-нибудь действия (например, введите букву А и нажмите клавишу Enter);
  4. группа Код - Остановить запись;
  5. в VBA будет код, который надо подкорректировать.


Цитата Сообщение от nt_dmn Посмотреть сообщение
А не подскажете ещё где мне отключить оповещение при закрытии файлов "в буфере обмена осталось.. бла бла бла" Чет все настройки перерыл, нету...
не знаю, можно это сделать с помощью интерфейса программы Excel, а программно вот так делается:
эту строку поместите перед закрытием книги:
Visual Basic
1
Application.DisplayAlerts = False
а эту после закрытия книги:
Visual Basic
1
Application.DisplayAlerts = True
1
0 / 0 / 0
Регистрация: 28.04.2011
Сообщений: 60
06.10.2011, 17:32  [ТС] 15
Спасибо, со всем разобрался позавчера из познаний у меня был только бэйсик ук нц со школьной программы, за 2 дня уже в vba начал вникать
0
0 / 0 / 0
Регистрация: 13.06.2014
Сообщений: 5
13.06.2014, 15:35 16
Форумчане, подскажите, пожалуйста, как в 12 строчке кода, вместо Rows("10:10") указать копировать заполненный диапазон, начиная от второй строчки и до конца, где есть записи.
И есть ли возможность, этот макрос привязать к какой-то новой кнопке на ленте? А то с этим еще не разбирался.
Заранее спасибо!
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub Процедура1()
'Обращаться с книгами будем через переменные
'(кода меньше писать и не промахнёшься мимо нужной книги)
Dim Исходная As Excel.Workbook, Конечная As Excel.Workbook
Dim nss As Long
Set Исходная = ActiveWorkbook
'открываем книгу
Set Конечная = Workbooks.Open("C:\Documents and Settings\Пользователь\Рабочий стол\Книга2.xlsx")
'копируем строку 
'Вот тут :)
Исходная.Worksheets(1).Rows("10:10").Copy
        'выбираем номер начальной строки для поиска последней записи
        nss = 2
        'ищем последнюю запись
        Do While Конечная.Worksheets(1).Range("B" & nss).Value <> ""
            'увеличиваем номер строки на 1
            nss = nss + 1
        Loop
        'вставляем строку из буфера
        Конечная.Worksheets(1).Rows(nss).PasteSpecial
        Конечная.Close SaveChanges:=True
End Sub
0
6944 / 2849 / 548
Регистрация: 19.10.2012
Сообщений: 8,721
13.06.2014, 16:09 17
Попробуйте так (не проверял):
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Sub Процедура1()
'Обращаться с книгами будем через переменные
'(кода меньше писать и не промахнёшься мимо нужной книги)
    Dim Исходная As Excel.Workbook, Конечная As Excel.Workbook
    Set Исходная = ActiveWorkbook
    'открываем книгу
    Set Конечная = Workbooks.Open("C:\Documents and Settings\Пользователь\Рабочий стол\Книга2.xlsx")
    'копируем строку
    'Вот тут :)
    Исходная.Worksheets(1).Range("B2").CurrentRegion.Copy Конечная.Worksheets(1).Cells(Rows.Count, "B").End(xlUp)(2, 0)
    Конечная.Close SaveChanges:=True
End Sub
1
0 / 0 / 0
Регистрация: 13.06.2014
Сообщений: 5
13.06.2014, 16:19 18
Hugo, а что поменять, чтобы копировались не все данные, а начиная со второй строки и до конца, т.к. в первой строке идут названия столбцов?
0
6944 / 2849 / 548
Регистрация: 19.10.2012
Сообщений: 8,721
13.06.2014, 16:50 19
Visual Basic
1
    Исходная.Worksheets(1).Range("B2").CurrentRegion.Offset(1).Copy Конечная.Worksheets(1).Cells(Rows.Count, "B").End(xlUp)(2, 0)
Будет правда ещё снизу одну пустую строку прихватывать - но это ведь ерунда. Можно убрать ресайсом, но лень.
1
0 / 0 / 0
Регистрация: 13.06.2014
Сообщений: 5
13.06.2014, 18:16 20
Hugo, огромнейшая благодарность!!! Работает!
0
13.06.2014, 18:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.06.2014, 18:16
Помогаю со студенческими работами здесь

Копирование вкладки из одной открытой книги в другую
Есть две книги которым в коде назначены переменные, но если в первый раз копирование проходит, то...

Копирование диапазона ячеек из одной книги в другую
Добрый день! Есть два файла, первый файл является &quot;сборщиком&quot; то есть таблицей куда переносятся...

Копирование данных из одной книги Excel в другую
Доброго времени суток, форумчане. Задача перенести с листа одной книги все данные на лист второй...

Копирование формата ячейки из одной книги в другую
Есть макрос который копирует данные из одной книги в другую. Как дополнить макрос, чтобы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru