К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Access модуль объединения текстовиков

Гость
0 - 09.08.2012 - 17:23
Добрый день.
Очень нужен модуль access который будет объединять текстовые файлы с предложенной папки (каждый раз разные названия и количества файлов). Стандартная функция объединения возможна только к привязаным файлам. Помогите пжл



Гость
1 - 09.08.2012 - 19:23
Цена вопроса? Сейчас умеренно загружен, рублей за 700 нарисую. Разумный торг.
Гость
2 - 09.08.2012 - 19:28
Готового нету? не очень хочется деньги платить :) Если у кого есть выложите пожалуйста в файлообменник или на почту
Гость
3 - 09.08.2012 - 19:29
там делов на пол страницы всего, у меня есть такой же для экселевских файлов, но переделать говорят не получиться его
Гость
4 - 10.08.2012 - 07:58
0) Это реально стоит больше 700 рублей, т.к. разные имена и кол-ва файлов требуют техзадания на полстраницы и его понимания. Если хочется повозиться самому, то:

1) можно скриптом (BAT/VBS/WSH/Python) переименовать разные файлы в "привязанные", а затем уже открывать Access (можно назначить скрипт в св-вах ярлыка)

2) Можно перепривязать TXT макросом VBA внутри Access, при открытии БД разные файлы - в "привязанные". При этом нужно отловить обновление связей, и запустить его уже после переименования.

PS Динамическая перелинковка таблиц - слабое место Access, я в MS писал об этом лет десять назад, ничего не поменялось...

4) Вот код на VBA/VB/VBS/WSH, который решает главную проблему TXT-свалки: рекурсию по всем (под)папкам и файлам:

' рекурсивный перебор файлов во всех подпапках корневой (c Thisworkbook) папки, с бесконечной вложенностью

Set FSO = CreateObject("Scripting.FileSystemObject")
Set RootFolder = FSO.GetFolder(ThisWorkbook.Path) ' установили Корн папку

'--------------------------------------------------
' Set FilesInRoot = RootFolder.Files ' считали файлы в кор папке и в цикле показали их

For Each FileInRoot In FilesInRoot
MsgBox FileInRoot.Name
Next

Set SubFolders = RootFolder.SubFolders ' считали подпапки
For Each Subfolder In SubFolders
Set FilesInSubfolders = Subfolder.Files ' считали файлы из подпапок

For Each FileInSubfolder In FilesInSubfolders
MsgBox FileInSubfolder.Name
Next
Next
Гость
5 - 13.08.2012 - 15:46
# на питоне еще красивее
import os
def walk(dir):
for name in os.listdir(dir):
path = os.path.join(dir, name)
if os.path.isfile(path):
print path
else:
walk(path)
walk(path)
Гость
6 - 15.08.2012 - 20:12
ребят тут делов на 4 строчки, я нашел уже как на другом форумею Делюсь ))
1 Public Sub UnionFile()
2 path1="E:\222\" ' место где лежат файлы тут же появится файл dest.txt
3 Call Shell("cmd /c copy """ & path1 & "*.txt"" """ & path1 & "dest.txt""")
4 End Sub
Гость
7 - 15.08.2012 - 20:14
если не поймете могу скинуть готовую аксесину с готовым модулем и макросом вывода результата
Гость
8 - 17.08.2012 - 08:08
В принципе да, только пример (6) не скопирует ПОДпапки с вложенными в них файлами txt, так что если такое понадобится - только рекурсия, как в примерах 4 и 5.

И потом, у многих на работе злые одминчеги могут запретить скрипты и вызов CMD в целях якобы безопасности. В таких случаях нужно популярно объяснить что они не правы.
Гость
9 - 17.08.2012 - 17:03
economist у меня все прекрасно работает, объединение происходит быстро так же как и в тоталкоммандере или тктколлекторе :) на работе одминчики не лазят по личным наработкам программ это им запрещенно :)


К списку вопросов






Copyright ©, Все права защищены