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

Вход

Регистрация

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

 

= Мир MS Excel/копирование активной строки в другую книгу с условием - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » копирование активной строки в другую книгу с условием (Макросы/Sub)
копирование активной строки в другую книгу с условием
Raven2009 Дата: Воскресенье, 20.10.2019, 23:41 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый день.

Просьба помочь. Есть 2 книги с таблицами. Подскажите пожалуйста, как можно реализовать следующее?:

- в книге enter в таблице пользователь щелкает по нужной строке (т.е. делает нужную строку активной) и нажимает кнопку
- по нажатию кнопки значения выделенной строки:
- копируются в таблицу книги exit
- но без значений 4-го столбца Комментарий (такого столбца в exit нет), т.е. 4ый столбец нужно пропустить...
- каждое копирование из книги enter происходит на следующую свободную строку книги exit
К сообщению приложен файл: test1.rar(20.5 Kb)
 
Ответить
СообщениеДобрый день.

Просьба помочь. Есть 2 книги с таблицами. Подскажите пожалуйста, как можно реализовать следующее?:

- в книге enter в таблице пользователь щелкает по нужной строке (т.е. делает нужную строку активной) и нажимает кнопку
- по нажатию кнопки значения выделенной строки:
- копируются в таблицу книги exit
- но без значений 4-го столбца Комментарий (такого столбца в exit нет), т.е. 4ый столбец нужно пропустить...
- каждое копирование из книги enter происходит на следующую свободную строку книги exit

Автор - Raven2009
Дата добавления - 20.10.2019 в 23:41
doober Дата: Понедельник, 21.10.2019, 13:32 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 582
Репутация: 247 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте.
Считаем, что файл exit открыт или сами с ним определитесь.[vba]
Код
Sub CCopy()
' считаем, что файл exit.xlsx открыт
    Dim exit_ As Worksheet
    rw = ActiveCell.Row
    Set exit_ = Workbooks("exit.xlsx").Worksheets(1)
    LastRow = exit_.Cells(exit_.Rows.Count, 1).End(xlUp).Row + 1
    Union(Range("A" & rw & ":C" & rw), Range("e" & rw & ":f" & rw)).Copy exit_.Cells(LastRow, 1)
End Sub
[/vba]


 
Ответить
СообщениеЗдравствуйте.
Считаем, что файл exit открыт или сами с ним определитесь.[vba]
Код
Sub CCopy()
' считаем, что файл exit.xlsx открыт
    Dim exit_ As Worksheet
    rw = ActiveCell.Row
    Set exit_ = Workbooks("exit.xlsx").Worksheets(1)
    LastRow = exit_.Cells(exit_.Rows.Count, 1).End(xlUp).Row + 1
    Union(Range("A" & rw & ":C" & rw), Range("e" & rw & ":f" & rw)).Copy exit_.Cells(LastRow, 1)
End Sub
[/vba]

Автор - doober
Дата добавления - 21.10.2019 в 13:32
Raven2009 Дата: Суббота, 26.10.2019, 19:32 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Считаем, что файл exit открыт или сами с ним определитесь.


спасибо вам большое! А если не открывать его, а через открытие к нему обратиться, будет работать?

примерно так (копировал из другого кода)

[vba]
Код
Set DestinW= Workbooks.Open("\\d\file1.xlsx")
[/vba]
 
Ответить
Сообщение
Считаем, что файл exit открыт или сами с ним определитесь.


спасибо вам большое! А если не открывать его, а через открытие к нему обратиться, будет работать?

примерно так (копировал из другого кода)

[vba]
Код
Set DestinW= Workbooks.Open("\\d\file1.xlsx")
[/vba]

Автор - Raven2009
Дата добавления - 26.10.2019 в 19:32
Raven2009 Дата: Суббота, 26.10.2019, 21:52 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
излишнее цитирование удалено

Я попробовал код с условием уже открытого файла. Он почему то копирует не во вторую, а на 3-ю строку и далее. Таблицы там динамические (умные). Наверно из-за этого?


Сообщение отредактировал Pelena - Суббота, 26.10.2019, 23:19
 
Ответить
Сообщениеизлишнее цитирование удалено

Я попробовал код с условием уже открытого файла. Он почему то копирует не во вторую, а на 3-ю строку и далее. Таблицы там динамические (умные). Наверно из-за этого?

Автор - Raven2009
Дата добавления - 26.10.2019 в 21:52
Pelena Дата: Суббота, 26.10.2019, 23:18 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 14764
Репутация: 3229 ±
Замечаний: ±

Excel 2010, 2016 & Mac Excel
Попробуйте так
будет работать?

Теоретически будет, но надо ещё проверить, если файл уже открыт, то заново открывать не надо, иначе потеряются изменения.
Как проверить, открыта ли книга
К сообщению приложен файл: enter.xlsm(19.4 Kb)


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеПопробуйте так
будет работать?

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

Автор - Pelena
Дата добавления - 26.10.2019 в 23:18
Raven2009 Дата: Воскресенье, 27.10.2019, 00:06 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
заново открывать не надо


Спасибо вам)) по идее планируется книгу открывать, добавлять запись и закрывать с сохранением, но предварительная проверка все же не помешает))


Сообщение отредактировал Raven2009 - Воскресенье, 27.10.2019, 00:07
 
Ответить
Сообщение
заново открывать не надо


Спасибо вам)) по идее планируется книгу открывать, добавлять запись и закрывать с сохранением, но предварительная проверка все же не помешает))

Автор - Raven2009
Дата добавления - 27.10.2019 в 00:06
Raven2009 Дата: Воскресенье, 27.10.2019, 19:00 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Я извиняюсь, подскажите пожалуйста.

Я дополнил код, чтобы макрос открывал файл exit.xlsx. Он его открывает, но почему то запись теперь не добавляет...(( что не так теперь?
К сообщению приложен файл: 1193894.rar(23.8 Kb)
 
Ответить
СообщениеЯ извиняюсь, подскажите пожалуйста.

Я дополнил код, чтобы макрос открывал файл exit.xlsx. Он его открывает, но почему то запись теперь не добавляет...(( что не так теперь?

Автор - Raven2009
Дата добавления - 27.10.2019 в 19:00
Raven2009 Дата: Понедельник, 28.10.2019, 15:06 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Так и не нашел решения...
 
Ответить
СообщениеТак и не нашел решения...

Автор - Raven2009
Дата добавления - 28.10.2019 в 15:06
Pelena Дата: Понедельник, 28.10.2019, 16:55 | Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 14764
Репутация: 3229 ±
Замечаний: ±

Excel 2010, 2016 & Mac Excel
Когда открывается книга, активным становится уже другой лист, поэтому когда копируем, к Range надо обращаться с явным указанием листа
К сообщению приложен файл: 7770557.xlsm(18.5 Kb)


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеКогда открывается книга, активным становится уже другой лист, поэтому когда копируем, к Range надо обращаться с явным указанием листа

Автор - Pelena
Дата добавления - 28.10.2019 в 16:55
Raven2009 Дата: Понедельник, 28.10.2019, 19:22 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо вам!!!)) Всего лишь указать Activesheet... Гениальное просто)))

Забыл совсем, что копирование должно быть без УФ, просто значения копировать нужно... В большом рабочем файле (не в этом) скопировались условные форматирования строки. Как сделать, чтобы только значения активной строки копировались?
 
Ответить
СообщениеСпасибо вам!!!)) Всего лишь указать Activesheet... Гениальное просто)))

Забыл совсем, что копирование должно быть без УФ, просто значения копировать нужно... В большом рабочем файле (не в этом) скопировались условные форматирования строки. Как сделать, чтобы только значения активной строки копировались?

Автор - Raven2009
Дата добавления - 28.10.2019 в 19:22
Pelena Дата: Понедельник, 28.10.2019, 19:38 | Сообщение № 11
Группа: Админы
Ранг: Местный житель
Сообщений: 14764
Репутация: 3229 ±
Замечаний: ±

Excel 2010, 2016 & Mac Excel
Тогда лучше не копировать, а просто присвоить значения


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеТогда лучше не копировать, а просто присвоить значения

Автор - Pelena
Дата добавления - 28.10.2019 в 19:38
Raven2009 Дата: Понедельник, 28.10.2019, 19:43 | Сообщение № 12
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
просто присвоить значения

через равенство?? Где то видел такое решение, но у меня значения одного столбца посередине не нужны. Как это в моем случае делать?


Сообщение отредактировал Raven2009 - Понедельник, 28.10.2019, 19:45
 
Ответить
Сообщение
просто присвоить значения

через равенство?? Где то видел такое решение, но у меня значения одного столбца посередине не нужны. Как это в моем случае делать?

Автор - Raven2009
Дата добавления - 28.10.2019 в 19:43
Pelena Дата: Понедельник, 28.10.2019, 19:54 | Сообщение № 13
Группа: Админы
Ранг: Местный житель
Сообщений: 14764
Репутация: 3229 ±
Замечаний: ±

Excel 2010, 2016 & Mac Excel
Примерно так можно, если столбцов всего пять
[vba]
Код
    With enter_
        oTbl_exit.DataBodyRange.Cells(LastRow, 1) = .Range("A" & rw).Value
        oTbl_exit.DataBodyRange.Cells(LastRow, 2) = .Range("B" & rw).Value
        oTbl_exit.DataBodyRange.Cells(LastRow, 3) = .Range("C" & rw).Value
        oTbl_exit.DataBodyRange.Cells(LastRow, 4) = .Range("E" & rw).Value
        oTbl_exit.DataBodyRange.Cells(LastRow, 5) = .Range("F" & rw).Value
    End With
[/vba]


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеПримерно так можно, если столбцов всего пять
[vba]
Код
    With enter_
        oTbl_exit.DataBodyRange.Cells(LastRow, 1) = .Range("A" & rw).Value
        oTbl_exit.DataBodyRange.Cells(LastRow, 2) = .Range("B" & rw).Value
        oTbl_exit.DataBodyRange.Cells(LastRow, 3) = .Range("C" & rw).Value
        oTbl_exit.DataBodyRange.Cells(LastRow, 4) = .Range("E" & rw).Value
        oTbl_exit.DataBodyRange.Cells(LastRow, 5) = .Range("F" & rw).Value
    End With
[/vba]

Автор - Pelena
Дата добавления - 28.10.2019 в 19:54
Raven2009 Дата: Понедельник, 28.10.2019, 20:08 | Сообщение № 14
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
если столбцов всего пять


в том то и дело...) в рабочем файле их 50... И при этом где-то столбцов 5 не нужны, тоже как бы посередине... Но не подряд друг за другом...


Сообщение отредактировал Raven2009 - Понедельник, 28.10.2019, 20:09
 
Ответить
Сообщение
если столбцов всего пять


в том то и дело...) в рабочем файле их 50... И при этом где-то столбцов 5 не нужны, тоже как бы посередине... Но не подряд друг за другом...

Автор - Raven2009
Дата добавления - 28.10.2019 в 20:08
Pelena Дата: Понедельник, 28.10.2019, 20:17 | Сообщение № 15
Группа: Админы
Ранг: Местный житель
Сообщений: 14764
Репутация: 3229 ±
Замечаний: ±

Excel 2010, 2016 & Mac Excel
Немного короче
[vba]
Код
    With enter_
        oTbl_exit.DataBodyRange.Cells(LastRow, 1).Resize(, 3) = .Range("A" & rw).Resize(, 3).Value
        oTbl_exit.DataBodyRange.Cells(LastRow, 4).Resize(, 2) = .Range("E" & rw).Resize(, 2).Value
    End With
[/vba]


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеНемного короче
[vba]
Код
    With enter_
        oTbl_exit.DataBodyRange.Cells(LastRow, 1).Resize(, 3) = .Range("A" & rw).Resize(, 3).Value
        oTbl_exit.DataBodyRange.Cells(LastRow, 4).Resize(, 2) = .Range("E" & rw).Resize(, 2).Value
    End With
[/vba]

Автор - Pelena
Дата добавления - 28.10.2019 в 20:17
Raven2009 Дата: Понедельник, 28.10.2019, 21:27 | Сообщение № 16
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо! Все отлично пошло!

Может напоследок подскажете, как написать, чтобы сохранялся файл и закрывался? А то с кодом в конце

Wex.Close SaveChanges:=True

не успевает файл открыться для добавления строки, а уже пытается запуститься этот код, соответственно выдает ошибку

p.s. хотя, наверно это сетевой рабочий диск тормозит. На локальном компе работает все. Проверю еще, прошу прощения...


Сообщение отредактировал Raven2009 - Понедельник, 28.10.2019, 21:31
 
Ответить
СообщениеСпасибо! Все отлично пошло!

Может напоследок подскажете, как написать, чтобы сохранялся файл и закрывался? А то с кодом в конце

Wex.Close SaveChanges:=True

не успевает файл открыться для добавления строки, а уже пытается запуститься этот код, соответственно выдает ошибку

p.s. хотя, наверно это сетевой рабочий диск тормозит. На локальном компе работает все. Проверю еще, прошу прощения...

Автор - Raven2009
Дата добавления - 28.10.2019 в 21:27
Мир MS Excel » Вопросы и решения » Вопросы по VBA » копирование активной строки в другую книгу с условием (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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