открытие нескольких файлов txt

Автор M.Ya., 24 ноября 2021, 11:23

0 Пользователи и 1 гость просматривают эту тему.

M.Ya.

Доброго времени суток.

Есть следующая задача:
нужно открыть большое число текстовых файлов, преобразовать данные из них в таблицу и сохранить как xls.
Я смог записать макрос для одного файла PROMETEY. Подскажите, как прописать, чтоб этот макрос открывал все текстовые файлы в этой папке.

Sub Макрос3()
'
' Макрос3 Макрос
'

'
    Workbooks.OpenText Filename:= _
        "C:\Users\Lenovo\Downloads\TXT\PROMETEY.txt", Origin:=65001, _
        StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
        , Space:=False, Other:=True, OtherChar:=":", FieldInfo:=Array(Array(1, 1 _
        ), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
        Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15 _
        , 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), _
        Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), Array(27, 1)), _
        TrailingMinusNumbers:=True
    ActiveWorkbook.SaveAs Filename:= _
        "C:\Users\Lenovo\Downloads\TXT\PROMETEY_20211120.30817.xlsx", FileFormat:= _
        xlOpenXMLWorkbook, CreateBackup:=False
    ActiveWindow.Close
End Sub


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

П.С. я достаточно далек от языков программирования)))

bigor

Доброго

Как то все сложно у вас. А можно пример файлов приложить, которые нужно открывать. И уточнить весь процесс:
1. открыть первый/следующий текстовый файл
2. чего то с ним сделать
3.сохранить как XLS?
4.перейти к п.1
или открыть все текстовые, чего то сделать и сохранить один xls

ps текст макроса в сообщении нужно в теги заключать. Выделить код нажать кнопку # в редакторесообщений
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

M.Ya.

#2
Цитата: Bigor от 24 ноября 2021, 12:40
Доброго

Как то все сложно у вас. А можно пример файлов приложить, которые нужно открывать. И уточнить весь процесс:
1. открыть первый/следующий текстовый файл
2. чего то с ним сделать
3.сохранить как XLS?
4.перейти к п.1
или открыть все текстовые, чего то сделать и сохранить один xls

ps текст макроса в сообщении нужно в теги заключать. Выделить код нажать кнопку # в редакторесообщений


вот содержимое текстового файла

((//30817:1120:40846490:++
(Отдача):2044:0:0:0:0:0:0:0:6:47:88:237:464:665:334:149:54:0:0:0:0:0:0:0:0:
(Приём):109:8:7:8:8:7:9:8:3:0:0:0:0:0:0:0:0:3:7:7:8:6:7:6:7:
(Продажа):-1935:8:7:8:8:7:9:8:-3:-47:-88:-237:-464:-665:-334:-149:-54:3:7:7:8:6:7:6:7:
==))

файлы между собой отличаются названием и цифрами между двоеточиями. на сейчас я вручную их открываю в виде таблицы с разделением на колонки через двоеточия

нужно
1 - открыть в с преобразованием в таблицу
2 - сохранить как xls
3 - и так штук 60
4 - другой файл обращается к этим файлам, берет из них информацию  и сводит в свою таблицу

bigor

А вы уверены, что форум не перепутали? И xls Вам нужен и макрос Ваш на vba
Если  же все таки нужно через LO/OO то вариант конвертации через командную строку
Для виндовс приложен cmd файл в архиве. В первой строке правите путь, где лежат ваши txt. Во второй строке проверяете путь к LO/OO сохраняете, запускаете
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

M.Ya.

Цитата: Bigor от 25 ноября 2021, 17:29
А вы уверены, что форум не перепутали? И xls Вам нужен и макрос Ваш на vba
Если  же все таки нужно через LO/OO то вариант конвертации через командную строку
Для виндовс приложен cmd файл в архиве. В первой строке правите путь, где лежат ваши txt. Во второй строке проверяете путь к LO/OO сохраняете, запускаете

скорее всего перепутал)))
спасибо за помощь, но, к сожалению, ваш файл не пригодился - он открывал только 1 первый текстовый файл и без разбивки на колонки.

справился через запись макросов в эксель, потом копировал вставил 15 раз тело макроса с заменой даты в имени файла.

спасибо за помощь еще раз