Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Office Новый топик    Ответить
 Скопировать данные пассивной книги и вставить их в активную.  [new]
segail
Member

Откуда:
Сообщений: 383
Здравствуйте.
Ребята помогите с макросом.
С активной книги необходимо, не используя путь, копировать диапазон данные в скрытом листе пассивной книги с последующей вставкой в активную.
При условии, если есть (открыта) пассивная книга.
18 ноя 18, 12:27    [21737357]     Ответить | Цитировать Сообщить модератору
 Re: Скопировать данные пассивной книги и вставить их в активную.  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19959
segail
помогите с макросом.
Где тот макрос, с которым нужно помочь?
18 ноя 18, 12:43    [21737364]     Ответить | Цитировать Сообщить модератору
 Re: Скопировать данные пассивной книги и вставить их в активную.  [new]
segail
Member

Откуда:
Сообщений: 383
Shocker.Pro
segail
помогите с макросом.
Где тот макрос, с которым нужно помочь?

Нет макроса, помогите с макросом, есть только активная книга Б_Д, пассивные книги с именем скрытого листа «итог», в котором необходимо скопировать и вставить диапазон "B3:B4" в активную книгу.
18 ноя 18, 12:57    [21737372]     Ответить | Цитировать Сообщить модератору
 Re: Скопировать данные пассивной книги и вставить их в активную.  [new]
The_Prist
Member

Откуда: www.excel-vba.ru
Сообщений: 1806
segail, а Вы сами поняли чего написали?
segail
С активной книги необходимо, не используя путь, копировать диапазон данные в скрытом листе пассивной книги с последующей вставкой в активную
Без обид, но описание выглядит так, будто писалось по принципу "лишь бы что-то написать, а там пусть сами разбираются" Картинка с другого сайта.

Имя пассивной книги при этом откуда брать? Что вообще есть пассивная книга? Что если их несколько?
Вот Вам два примера.
Пример 1. Конкретное имя пассивной книги(КнигаПасс.xlsm) и её листа(итог) копируем в активную ячейку активного листа активной книги(т.к. другого от Вас не дано):
Applicatoin.Workbooks("КнигаПасс.xlsm").Sheets("итог").Range("B3:B4").Copy ActiveCell

Пример 1. Данные листа(итог) книги с кодом(т.е. той, в которой расположен сам код копирования) копируем в активную ячейку активного листа активной книги(т.к. другого от Вас не дано):
Applicatoin.ThisWorkbook.Sheets("итог").Range("B3:B4").Copy ActiveCell

Если адрес ячеек активной книги отличается от активной ячейки, то замените ActiveCell на конкретный адрес(например,
Range("A3")
)
18 ноя 18, 13:06    [21737380]     Ответить | Цитировать Сообщить модератору
 Re: Скопировать данные пассивной книги и вставить их в активную.  [new]
segail
Member

Откуда:
Сообщений: 383
The_Prist, дело в том, что если открыта книга Б_Д и находясь непосредственно в данной книге (выполняя некие действия) я ее определяю как активная, если же при этом открыта еще одна книга то она по отношению к книге Б_Д будет пассивной, а так как пассивных книг может быть много с разными именами то прописывать конкретный путь не пойдет. Но открыта перед копированием и вставкой будет только одна из пассивных книг.
Если такое невозможно по определению и я ошибаюсь в правильности понимания пассивности и активности книг, а путь есть основа для выполнения нужного действия, то извиняюсь за беспокойство ничего не надо.
18 ноя 18, 13:23    [21737385]     Ответить | Цитировать Сообщить модератору
 Re: Скопировать данные пассивной книги и вставить их в активную.  [new]
Казанский
Member

Откуда:
Сообщений: 1290
segail,
работает с первой из пассивных книг
Sub Se()
Dim w As Workbook, a As Worksheet
  For Each w In Workbooks
    If Not w Is ActiveWorkbook Then
      If w.Windows(1).Visible Then
        On Error Resume Next
        Set a = w.Worksheets("итог")
        If Err Then MsgBox "В книге " & w.Name & " нет листа 'итог'", vbCritical: Exit Sub
        a.Range("B3:B4").Copy ActiveCell
        Exit Sub
      End If
    End If
  Next
  MsgBox "Нет пассивной книги", vbCritical
End Sub
18 ноя 18, 15:29    [21737443]     Ответить | Цитировать Сообщить модератору
 Re: Скопировать данные пассивной книги и вставить их в активную.  [new]
segail
Member

Откуда:
Сообщений: 383
Казанский, Вы мастер, лаконичность кода, лично мне не дает понимание как происходит вставка, поэтому добавил вместо ActiveCell нужный лист и ячейку для вставки,
 a.Range("B3:B4").Copy Sheets("фильтр").Range("A1")

но не знаю как и куда притянуть вставку именно на связь и исходное форматирование.
Через макрорекордер данный код выглядит так
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone,  SkipBlanks:=False, Transpose:=False
ActiveSheet.Paste Link:=True
18 ноя 18, 16:47    [21737469]     Ответить | Цитировать Сообщить модератору
 Re: Скопировать данные пассивной книги и вставить их в активную.  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 18606
Есть маленький "но". Всё это может происходить в одном хост-процессе Excel, а может и в двух разных. И во втором случае достучаться до "пассивной" книги - задача нетривиальная...
18 ноя 18, 17:31    [21737477]     Ответить | Цитировать Сообщить модератору
 Re: Скопировать данные пассивной книги и вставить их в активную.  [new]
segail
Member

Откуда:
Сообщений: 383
Akina
Есть маленький "но". Всё это может происходить в одном хост-процессе Excel, а может и в двух разных. И во втором случае достучаться до "пассивной" книги - задача нетривиальная...

В двух разных это как?
18 ноя 18, 17:42    [21737479]     Ответить | Цитировать Сообщить модератору
 Re: Скопировать данные пассивной книги и вставить их в активную.  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 18606
segail
это как?
А вот так, например:

К сообщению приложен файл. Размер - 68Kb
18 ноя 18, 18:36    [21737497]     Ответить | Цитировать Сообщить модератору
 Re: Скопировать данные пассивной книги и вставить их в активную.  [new]
Казанский
Member

Откуда:
Сообщений: 1290
segail
как и куда притянуть вставку именно на связь и исходное форматирование
Наверно так
a.Range("B3:B4").Copy
Sheets("фильтр").Range("A1").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone,  SkipBlanks:=False, Transpose:=False
Sheets("фильтр").Range("A1").Paste Link:=True
application.cutcopymode=false 'выйти из режима копирования-вставки
18 ноя 18, 19:25    [21737516]     Ответить | Цитировать Сообщить модератору
 Re: Скопировать данные пассивной книги и вставить их в активную.  [new]
segail
Member

Откуда:
Сообщений: 383
Akina, не понял я не черта, ну если и будет какой-то временной сбой, то это не критично, главное в последующем чтобы это восстанавливалось, основное это чтобы копирование было менее замороченным.
18 ноя 18, 21:42    [21737587]     Ответить | Цитировать Сообщить модератору
 Re: Скопировать данные пассивной книги и вставить их в активную.  [new]
segail
Member

Откуда:
Сообщений: 383
Казанский, Благодарю! Тестово пока работает, буду пробовать вписывать его в рабочий файл.
18 ноя 18, 21:43    [21737588]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Office Ответить