Раннее писал о своей проблеме, было предложено ее решение, но немного не подошло, при этом натолкнув на другой вариант ее решения.
Есть клиентская база (456 шт. на данный момент), на каждого клиента по имени и фамилии заведен свой индивидуальный лист в формате: Иванов Иван.xlsx Петров Петр.xlsx и т.д.
Создан сводный лист (данные вытягиваются через скрипт вывода списка файлов в определенной папке), с именами файлов и путям к ним. Клиентские файлы все однотипные. Все необходимые данные находятся во всех листах на одних и тех же местах.
Требуется в сводном листе (прикрепил к сообщению) вставить допустим ячейку 1A на против его записи в списке сводного файла. То есть есть путь и имя файла в виде текста, нужно что бы используя эти данные в ячейку F2, F3, и т.д. вставлялось значение ячейки A1 из книги с данными клиента. При этом категорически необходимо, что бы считывание происходило из закрытой книги. Пытался использовать функцию АДРЕС и ДВСЫЛ, категорически не получается сделать так, что бы путь и имя файла воспринимались не как текст, а вставлялись в качестве пути к открытию файла.
Забивать все ручками не вариант, т.к. клиентская база постоянно меняется. Хотелось бы именно периодически обновлять сводный фаил методом полного обновления списка клиентов (файлов в папке) и последующем копировании дополнительных ячеек, которые будут вставлять данные в сводный лист из определенных ячеек.
Раннее писал о своей проблеме, было предложено ее решение, но немного не подошло, при этом натолкнув на другой вариант ее решения.
Есть клиентская база (456 шт. на данный момент), на каждого клиента по имени и фамилии заведен свой индивидуальный лист в формате: Иванов Иван.xlsx Петров Петр.xlsx и т.д.
Создан сводный лист (данные вытягиваются через скрипт вывода списка файлов в определенной папке), с именами файлов и путям к ним. Клиентские файлы все однотипные. Все необходимые данные находятся во всех листах на одних и тех же местах.
Требуется в сводном листе (прикрепил к сообщению) вставить допустим ячейку 1A на против его записи в списке сводного файла. То есть есть путь и имя файла в виде текста, нужно что бы используя эти данные в ячейку F2, F3, и т.д. вставлялось значение ячейки A1 из книги с данными клиента. При этом категорически необходимо, что бы считывание происходило из закрытой книги. Пытался использовать функцию АДРЕС и ДВСЫЛ, категорически не получается сделать так, что бы путь и имя файла воспринимались не как текст, а вставлялись в качестве пути к открытию файла.
Забивать все ручками не вариант, т.к. клиентская база постоянно меняется. Хотелось бы именно периодически обновлять сводный фаил методом полного обновления списка клиентов (файлов в папке) и последующем копировании дополнительных ячеек, которые будут вставлять данные в сводный лист из определенных ячеек.Vlad-on
на каждого клиента по имени и фамилии заведен свой индивидуальный лист в формате: Иванов Иван.xlsx Петров Петр.xlsx
А зачем, простите? Если на каждого клиента нужно именно по листу, то отчего не хранить их все в одном файле? Заодно и список получать легче. И да, Вы не забыли предусмотреть, что люди бывают тёзками, иногда даже полными?
на каждого клиента по имени и фамилии заведен свой индивидуальный лист в формате: Иванов Иван.xlsx Петров Петр.xlsx
А зачем, простите? Если на каждого клиента нужно именно по листу, то отчего не хранить их все в одном файле? Заодно и список получать легче. И да, Вы не забыли предусмотреть, что люди бывают тёзками, иногда даже полными?StoTisteg
Интуитивно понятный код - это когда интуитивно понятно, что это код.
Добрый день. Вариант на Power Query Если не установлена, то скачайте надстройку. Удалите мои 2 верхних строки и нажмите "Обновить" на вкладке данные
Добрый день. Вариант на Power Query Если не установлена, то скачайте надстройку. Удалите мои 2 верхних строки и нажмите "Обновить" на вкладке данныеsboy
Макрос в модуль листа Лист называется "Ведомость". Измените на свое название. В ячейке I1 пишем адрес той ячейки, откуда нужно вынуть данные [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) = "I1" Then On Error Resume Next ad_ = Range(Range("I1")).Address(, , xlR1C1) If Err Then Exit Sub On Error GoTo 0 sh_ = "Ведомость" n_ = Cells(Rows.Count, 2).End(3).Row - 1 ar = Cells(2, 6).Resize(n_) arf = Cells(2, 1).Resize(n_, 2) For i = 1 To n_ If Dir(arf(i, 2)) = "" Then ar(i, 1) = "" Else put_ = "'" & Left(arf(i, 2), InStrRev(arf(i, 2), "\")) & "[" & arf(i, 1) & "]" & sh_ & "'!" & ad_ ar(i, 1) = ExecuteExcel4Macro(put_) End If Next i Cells(2, 6).Resize(n_) = ar End If End Sub
[/vba]
Макрос в модуль листа Лист называется "Ведомость". Измените на свое название. В ячейке I1 пишем адрес той ячейки, откуда нужно вынуть данные [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) = "I1" Then On Error Resume Next ad_ = Range(Range("I1")).Address(, , xlR1C1) If Err Then Exit Sub On Error GoTo 0 sh_ = "Ведомость" n_ = Cells(Rows.Count, 2).End(3).Row - 1 ar = Cells(2, 6).Resize(n_) arf = Cells(2, 1).Resize(n_, 2) For i = 1 To n_ If Dir(arf(i, 2)) = "" Then ar(i, 1) = "" Else put_ = "'" & Left(arf(i, 2), InStrRev(arf(i, 2), "\")) & "[" & arf(i, 1) & "]" & sh_ & "'!" & ad_ ar(i, 1) = ExecuteExcel4Macro(put_) End If Next i Cells(2, 6).Resize(n_) = ar End If End Sub