Страницы: 1
RSS
Макрос, который вытаскивает определенные значения из других Excel файлов
 
Доброе утро,

Уважаемые форумчане, помогите пожалуйста со следующей задачей:

Дано: папка с большим числом (~4,5к+) типовых эксель файлов. В приложении типовой файл для примера (File example№4312).
Задача: создать макрос, который при активации, будет "пробегать" по всем файлам в указанной папке и собирать их названия(номера) и значения из определенных (заданных) ячеек, после чего записывать их себе в табличку. В приложении файл с примером того, как должен отрабатывать макрос(Data table example).

Понимаю, что просить подобное нагло, но буду чрезвычайно признателен, если кто-нибудь напишет его(макрос)  :oops:  или тыкнет в тему на форуме/ролик на ютубе, где разжёвано, как создать макрос, который при своей работе использует данные из других файлов.

Благодарю за помощь!
 
Говорят это можно в PQ самому легко накликать мышью.
Но я пас.
Но уверен что кто-то подскажет.
Зачем именно макрос? Его конечно тоже можно написать, но как-то не модно чтоль уже...
P.S. Если имя листа всегда одинаково (а по логике одинаково), то для макроса нужно всего лишь написать код перебора всех файлов каталога, и создание списка файлов.
И как имея эти данные написать в соседней ячейке ссылку типа
Код
='C:\Users\Имя\Downloads\[File example №4312.xlsx]Personal file example'!$B$1

Далее меняем ссылку на значение.
Изменено: Hugo - 29.10.2020 11:17:05
 
Цитата
matvei написал:
или тыкнет в тему на форуме/ролик на ютубе, где разжёвано
Просмотреть все файлы в папке
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Hugo написал:
Зачем именно макрос?
А каким образом сие можно реализовать БЕЗ использования макроса? Я слышал что подобные задачи вешают именно на макросы, поэтому и вспомнил о них, но к огромному моему сожалению, я не владею экселем в должной степени..
Цитата
Hugo написал:
Если имя листа всегда одинаково
Имена листов одинаковы, авторы не заморачиваясь, оставляли по дефолту "Лист1", а вот названия фалов все разные, но по одному формату.
 
Цитата
matvei написал:
каким образом сие можно реализовать БЕЗ использования макроса?
- так я написал ведь в первом предложении - PQ это не макрос.

Цитата
matvei написал:
Имена листов одинаковы, авторы не заморачиваясь, оставляли по дефолту "Лист1"
-  а в примере не так!
Получение списка файлов в папке и подпапках средствами VBA уже написано, можно использовать
https://excelvba.ru/code/FilenamesCollection
Но вот теперь есть сомнения по поводу имён листов... Если файлы открывать макросом - то имя не важно, можно брать первый лист, или активный лист.
Изменено: Hugo - 29.10.2020 11:47:20
 
А можно даже так -
1. В ТК получаем список файлов, копипастим его на лист
2. Строковыми функциями в ячейки рядом собираем строку-ссылку
3. Спецкопипастим эту строку назад как значение - получаем результат.

Ни макросы, ни PQ... Но опять важно имя листа!
Изменено: Hugo - 29.10.2020 11:51:50
 
Цитата
Hugo написал:
а в примере не так!
Согласен, итс май фолд. Сдуру обозвал примеров всё, что можно обозвать.
НО наверное правильнее будет делать акцент не на имя листа, а на, как Вы сказали, активный лист. Потому, как авторы, которые создают эти файлы, свободны в своих действиях в этом плане, и допускаю, что может найтись подобный мне, который для чужого комфорта решит изменить имя листа.

Прошу прощения, а ТК это что?  :oops:  
 
Цитата
matvei написал:
а ТК это
- ТоталКоммандер. Молодые вероятно не знают...
Кстати проверил этот последний подход:
в А1 скопипащено из ТК:
Код
c:\Users\Igor\Downloads\File example №4312.xlsx

в соседней ячейке
Код
="='"&ПОДСТАВИТЬ(A1;"\File";"\[File")&"]Personal file example'!$B$1"

т.к. каталог заранее известен, начало имени файла тоже, имя листа тоже, адрес ячейки тоже... поленился усложнять формулу :)
Теперь копипастим как значение и активируем чтоб пересчиталось.
На скрине формула, ниже результат: http://prntscr.com/v98nls
Ну а если имена листов неизвестны - тогда думаю нужно макрос писать, чтоб каждый файл открыть и взять с активного.
Не знаю проще ли справиться с этим в PQ.
Изменено: Hugo - 29.10.2020 12:21:47 (описки...)
 
matvei,наверное тотал командер)
:D
Цитата
Молодые вероятно не знают...
Изменено: Mershik - 29.10.2020 12:08:46
Не бойтесь совершенства. Вам его не достичь.
 
А в Винде встроенными средствами можно получить список полных имён файлов? Одно имя ещё можно исхитриться скопировать (правда не помню как, но делал), а вот список?
 
Hugo, не оно ?
https://www.white-windows.ru/pyat-prostyh-sposobov-poluchit-spisok-fajlov-i-papok-v-windows-10/
Не бойтесь совершенства. Вам его не достичь.
 
Вот спасибо, и ТК не нужен:
Заходим в целевую папку, выделяем в ней все файлы или папки, зажимаем Shift, кликаем правой кнопкой мыши и выбираем в меню опцию «Копировать как путь».
И работает не только в Вин10! :)
 
Цитата
Hugo написал:
тогда думаю нужно макрос писать, чтоб каждый файл открыть и взять с активного.
Перебрав иные варианты, мы таки вернулись к тому, что все-таки макрос в данном случае более уместен.  
 
matvei, он и был уместнее но еще PQ
Не бойтесь совершенства. Вам его не достичь.
 
Вот что за люди! PQ, PQ. Дайте вы ссылку человеку. :D Пусть учится. И для общего развития. А это далеко не полный список задач, которые можно решать при помощи данного инструмента.
Вот горшок пустой, он предмет простой...
 
Так за PQ не мы ответственны :)
Кстати легко там не учитывать имя листа?
P.S. Пытаюсь сделать используя наработки тёзки.
Изменено: Hugo - 29.10.2020 13:31:19
 
Поместить файл с этим кодом в каталог с всеми файлами-источниками (важно - не xlsx! или нужно доработать код!).
Открыть файл куда тянем, активировать чистый лист, выполнить код:
Скрытый текст

Я дописал буквально 15 строк, 2 изменил, 1 отключил.
Кстати можно этот файл с кодом и рядом положить, если эту строку изменить так:
Код
folder$ = ThisWorkbook.Path & "\Источники\"

а в каталоге Источники лежат файлы-источники
Изменено: Hugo - 29.10.2020 13:50:57
 
Цитата
Hugo написал:
важно - не xlsx
:cry: Все файлы .xlsx
 
Ну файл с кодом тоже может быть таким, пока его не сохранили.
Я это говорил про файл, где лежит код!
P.S. добавил файл. Там файл с кодом отдельно должен быть, источники в отдельном каталоге, чтоб никого не путать.
Изменено: Hugo - 29.10.2020 14:00:58
 
Цитата
Hugo написал:
Кстати легко там не учитывать имя листа?
Легко, но тогда нужен критерий выбора листа, т.к. понятие активный лист для PQ чуждо. Чисто технически наверное можно вытащить признак активности листа из xml структуры, но это не точно, и даже если точно, то не так просто, ранее мы это уже обсуждали. Гораздо проще проверять структуру данных на листе и сличать её с неким шаблоном.
Вот такой получается обработчик файлов. Этот вариант опирается на название листов Лист1.
Изменено: PooHkrd - 29.10.2020 16:46:43
Вот горшок пустой, он предмет простой...
Страницы: 1
Наверх