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

Вход

Регистрация

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

 

= Мир MS Excel/Объединение файлов с похожими названиями - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Объединение файлов с похожими названиями (Макросы/Sub)
Объединение файлов с похожими названиями
bankiroff Дата: Воскресенье, 01.11.2015, 09:49 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Всем добрый день!
Третий день "ломаю" голову, как реализовать такую штуку (поиск на просторах форума и интернета ни к чему не привел):

1. Имеется несколько файлов с расширениями .xlsx и .xlsb примерно с такими названиями: 1012_20151101.xlsx, 1012_20151030.xlsx, 1015_20151030.xlsb, 1518_20151030.xlsx и т.п. Данные файлы все находятся в одной папке.
2. Реализована форма посредством vba, в которой присутствует textbox для ввода данных.

Задача заключается в следующем:

Необходимо, чтобы макрос выполнял объединение содержимого экселевских файлов с похожими названиями, т.е. введя первые два значения наименования файлов, к примеру "10" в textbox, макрос находил в папке вот эти файлы: 1012_20151101.xlsx, 1012_20151030.xlsx, 1015_20151030.xlsb и производил объединение их содержимого с сохранением результата в новый файл с расширением .csv и присваивая ему название "10", т.е. взятое значение переменной из textbox.

Возможно ли реализовать такой макрос? Основная трудность для меня заключается именно в том, что я не понимаю, как реализовать поиск файлов по описанному условию. Очень надеюсь на вашу помощь!

Заранее спасибо!
 
Ответить
СообщениеВсем добрый день!
Третий день "ломаю" голову, как реализовать такую штуку (поиск на просторах форума и интернета ни к чему не привел):

1. Имеется несколько файлов с расширениями .xlsx и .xlsb примерно с такими названиями: 1012_20151101.xlsx, 1012_20151030.xlsx, 1015_20151030.xlsb, 1518_20151030.xlsx и т.п. Данные файлы все находятся в одной папке.
2. Реализована форма посредством vba, в которой присутствует textbox для ввода данных.

Задача заключается в следующем:

Необходимо, чтобы макрос выполнял объединение содержимого экселевских файлов с похожими названиями, т.е. введя первые два значения наименования файлов, к примеру "10" в textbox, макрос находил в папке вот эти файлы: 1012_20151101.xlsx, 1012_20151030.xlsx, 1015_20151030.xlsb и производил объединение их содержимого с сохранением результата в новый файл с расширением .csv и присваивая ему название "10", т.е. взятое значение переменной из textbox.

Возможно ли реализовать такой макрос? Основная трудность для меня заключается именно в том, что я не понимаю, как реализовать поиск файлов по описанному условию. Очень надеюсь на вашу помощь!

Заранее спасибо!

Автор - bankiroff
Дата добавления - 01.11.2015 в 09:49
wild_pig Дата: Воскресенье, 01.11.2015, 10:44 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 517
Репутация: 97 ±
Замечаний: 0% ±

2003, 2013
Пройтись по файлам в папке, если значение текстбокса входит в название файла то обрабатываем фапйл либо собираем пути к файлам в массив для дальнейшей работы с файлами
[vba]
Код
If InStr(имя_файла, Textbox1) > 0 Then
    'что-то делаем
End If
[/vba]
 
Ответить
СообщениеПройтись по файлам в папке, если значение текстбокса входит в название файла то обрабатываем фапйл либо собираем пути к файлам в массив для дальнейшей работы с файлами
[vba]
Код
If InStr(имя_файла, Textbox1) > 0 Then
    'что-то делаем
End If
[/vba]

Автор - wild_pig
Дата добавления - 01.11.2015 в 10:44
Wasilich Дата: Воскресенье, 01.11.2015, 11:17 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
как реализовать поиск файлов по описанному условию

[vba]
Код
Sub ВЫБОР_ФАЙЛОВ_ПО_МАСКЕ()
  Dim iPath$, iMaska$, iFile$
  iPath = "ПУТЬ К ФАЙЛАМ"
  iMaska = "10*.xls*"
  iFile = Dir(iPath & iMaska)
  Do While iFile <> ""
    MsgBox iFile
    'ЗАПИСАТЬ ИМЯ ФАЙЛА НА ЛИСТ ДЛЯ ПОСЛЕДУЮЩЕЙ РАБОТЫ
    iFile = Dir
  Loop
End Sub
[/vba]


Сообщение отредактировал Wasilic - Воскресенье, 01.11.2015, 11:22
 
Ответить
Сообщение
как реализовать поиск файлов по описанному условию

[vba]
Код
Sub ВЫБОР_ФАЙЛОВ_ПО_МАСКЕ()
  Dim iPath$, iMaska$, iFile$
  iPath = "ПУТЬ К ФАЙЛАМ"
  iMaska = "10*.xls*"
  iFile = Dir(iPath & iMaska)
  Do While iFile <> ""
    MsgBox iFile
    'ЗАПИСАТЬ ИМЯ ФАЙЛА НА ЛИСТ ДЛЯ ПОСЛЕДУЮЩЕЙ РАБОТЫ
    iFile = Dir
  Loop
End Sub
[/vba]

Автор - Wasilich
Дата добавления - 01.11.2015 в 11:17
bankiroff Дата: Воскресенье, 01.11.2015, 12:30 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Большое спасибо wild_pig и wasillic! Особое спасибо wasillic, за емкий ответ! Буду реализовывать макрос :)
 
Ответить
СообщениеБольшое спасибо wild_pig и wasillic! Особое спасибо wasillic, за емкий ответ! Буду реализовывать макрос :)

Автор - bankiroff
Дата добавления - 01.11.2015 в 12:30
bankiroff Дата: Воскресенье, 01.11.2015, 15:25 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Wasilic, а как реализовать поиск по маске, взятой из textbox?

В коде вы написали:

Цитата
iMaska = "10*.xls*"


Но это "жестко" заданное условие, а мне необходимо, чтобы название (маска) требуемого файла бралась из текстбокса... Как это можно реализовать?
 
Ответить
СообщениеWasilic, а как реализовать поиск по маске, взятой из textbox?

В коде вы написали:

Цитата
iMaska = "10*.xls*"


Но это "жестко" заданное условие, а мне необходимо, чтобы название (маска) требуемого файла бралась из текстбокса... Как это можно реализовать?

Автор - bankiroff
Дата добавления - 01.11.2015 в 15:25
_Boroda_ Дата: Воскресенье, 01.11.2015, 16:53 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Как-то так можно[vba]
Код

iMaska = "*" & Textbox1 & "*.xls*"
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеКак-то так можно[vba]
Код

iMaska = "*" & Textbox1 & "*.xls*"
[/vba]

Автор - _Boroda_
Дата добавления - 01.11.2015 в 16:53
Udik Дата: Воскресенье, 01.11.2015, 17:15 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
Только определитесь, Вам нужно совпадение символов вначале названия или в любом месте подойдёт.


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
СообщениеТолько определитесь, Вам нужно совпадение символов вначале названия или в любом месте подойдёт.

Автор - Udik
Дата добавления - 01.11.2015 в 17:15
bankiroff Дата: Воскресенье, 01.11.2015, 18:38 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Udik, совпадение символов должно быть вначале.
 
Ответить
СообщениеUdik, совпадение символов должно быть вначале.

Автор - bankiroff
Дата добавления - 01.11.2015 в 18:38
bankiroff Дата: Воскресенье, 01.11.2015, 18:40 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
_Boroda_, большое спасибо за подсказку!

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

Цитата
iFile = Dir(iPath & iMaska)
Do While iFile <> ""
MsgBox iFile
'ЗАПИСАТЬ ИМЯ ФАЙЛА НА ЛИСТ ДЛЯ ПОСЛЕДУЮЩЕЙ РАБОТЫ
iFile = Dir
Loop


Мне не совсем понятно, что здесь выполняется :(
 
Ответить
Сообщение_Boroda_, большое спасибо за подсказку!

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

Цитата
iFile = Dir(iPath & iMaska)
Do While iFile <> ""
MsgBox iFile
'ЗАПИСАТЬ ИМЯ ФАЙЛА НА ЛИСТ ДЛЯ ПОСЛЕДУЮЩЕЙ РАБОТЫ
iFile = Dir
Loop


Мне не совсем понятно, что здесь выполняется :(

Автор - bankiroff
Дата добавления - 01.11.2015 в 18:40
bankiroff Дата: Воскресенье, 01.11.2015, 19:00 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Все, с этим разобрался :) еще раз большое спасибо всем!

Но есть еще один маленький вопросик :)

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

Заранее спасибо!
 
Ответить
СообщениеВсе, с этим разобрался :) еще раз большое спасибо всем!

Но есть еще один маленький вопросик :)

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

Заранее спасибо!

Автор - bankiroff
Дата добавления - 01.11.2015 в 19:00
_Boroda_ Дата: Воскресенье, 01.11.2015, 19:04 | Сообщение № 11
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Про Dir
http://www.excelworld.ru/stuff/vba_function/files/dir/23-1-0-76
Про Do While
https://msdn.microsoft.com/ru-ru/library/eked04a7.aspx
[vba]
Код
iFile = Dir
[/vba] Повторный вызов Dir и так до того момента, пока работает Do While<>""


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеПро Dir
http://www.excelworld.ru/stuff/vba_function/files/dir/23-1-0-76
Про Do While
https://msdn.microsoft.com/ru-ru/library/eked04a7.aspx
[vba]
Код
iFile = Dir
[/vba] Повторный вызов Dir и так до того момента, пока работает Do While<>""

Автор - _Boroda_
Дата добавления - 01.11.2015 в 19:04
Udik Дата: Воскресенье, 01.11.2015, 19:34 | Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
совпадение символов должно быть вначале.

тогда тут
[vba]
Код
iMaska = "*" & Textbox1 & "*.xls*"
[/vba]

убрать первую звёздочку

[vba]
Код
iMaska = Textbox1 & "*.xls*"
[/vba]


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com


Сообщение отредактировал Udik - Воскресенье, 01.11.2015, 19:35
 
Ответить
Сообщение
совпадение символов должно быть вначале.

тогда тут
[vba]
Код
iMaska = "*" & Textbox1 & "*.xls*"
[/vba]

убрать первую звёздочку

[vba]
Код
iMaska = Textbox1 & "*.xls*"
[/vba]

Автор - Udik
Дата добавления - 01.11.2015 в 19:34
Wasilich Дата: Воскресенье, 01.11.2015, 20:51 | Сообщение № 13
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Ув. bankiroff, сначала была
Основная трудность ... в том, что я не понимаю, как реализовать поиск файлов по описанному условию.
И вдруг возникает
маленький вопросик... Как мне организовать сохранение найденных файлов в один? То есть объединить их содержание и сохранить в единый файл?
да еще и с условием
что содержание может иметь разную структуру (таблицы).
Этот, поверьте, вопросик, многократно сложнее нежели поиск файлов.
Ну а, как организовать, путей много, поочередно подгружаете файлы, определяете структуру таблицы и копируете ее в свой рабочий файл. Так наверное.
Мож еще кто чего подскажет. :)
 
Ответить
СообщениеУв. bankiroff, сначала была
Основная трудность ... в том, что я не понимаю, как реализовать поиск файлов по описанному условию.
И вдруг возникает
маленький вопросик... Как мне организовать сохранение найденных файлов в один? То есть объединить их содержание и сохранить в единый файл?
да еще и с условием
что содержание может иметь разную структуру (таблицы).
Этот, поверьте, вопросик, многократно сложнее нежели поиск файлов.
Ну а, как организовать, путей много, поочередно подгружаете файлы, определяете структуру таблицы и копируете ее в свой рабочий файл. Так наверное.
Мож еще кто чего подскажет. :)

Автор - Wasilich
Дата добавления - 01.11.2015 в 20:51
bankiroff Дата: Понедельник, 02.11.2015, 06:39 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Я только сейчач понял, что этот вопрос сложнее, чем предыдущий :) трудность в том, как полностью совместить два файла? не зависимо от кол-ва таблиц и строк?
 
Ответить
СообщениеЯ только сейчач понял, что этот вопрос сложнее, чем предыдущий :) трудность в том, как полностью совместить два файла? не зависимо от кол-ва таблиц и строк?

Автор - bankiroff
Дата добавления - 02.11.2015 в 06:39
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Объединение файлов с похожими названиями (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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