Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2017, 22:52   #1
SaylerZ
 
Регистрация: 13.10.2017
Сообщений: 4
По умолчанию Перенос данных из текстовых файлов в excel

Доброго всем дня!
Помогите, пожалуйста с решением проблемы!
Есть множество txt файлов, нужно при помощи макроса перенести данные из этих файлов в Ексель с разбивкой по столбцам. Если подробней, то текстовый файл содержит порядка 15 строк, нужно эти строки перенести в отдельные столбцы ексель, далее взять следующий текстовый файл и также, только с новой строки, разбить его на столбцы в этот же ексель. Формат текстового файла приблизительно такой:
текст1: значение1
Текст2: значение2 и т.д.
В идеале конечно же было копировать значения только после ":пробел", но хотя бы всю строку. Моих познаний хватило только на макрос с разбивкой одного файла на столбцы и то подсмотрел на форуме. В макросах совсем не силен.
SaylerZ вне форума Ответить с цитированием
Старый 23.10.2017, 23:06   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

1. Выполняем в каталоге с текстами
Код:
copy /b *.txt all.txt
2. Стандартно мастером "данные ->из текста" грузим этот all.txt в Эксель с нужной разбивкой по столбцам.

Писал пост дольше чем заняла бы эта работа...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 23.10.2017, 23:33   #3
SaylerZ
 
Регистрация: 13.10.2017
Сообщений: 4
По умолчанию

Спасибо, но толи я не понял Вас, толи это немного не то. Получится я все файлы соединю в один, а дальше разобью на столбцы допустим по ":" Получится только 2 столбца. Пример: есть 2 текстовых файла со значениями:
текст1: значение1
Текст2: значение2
Текст3: значение3
и:
текст1: значение4
Текст2: значение5
Текст3: значение6
По вашей схеме получится таблица:
текст1 значение1
Текст2 значение2
Текст3 значение3
текст1 значение4
Текст2 значение5
Текст3 значение6
А нужно:
текст1: значение1 Текст2: значение2 Текст3: значение3
Текст1: значение4 Текст2: значение5 Текст3: значение6
Или в идеале таблица:
значение1 значение2 значение3
значение4 значение5 значение6
SaylerZ вне форума Ответить с цитированием
Старый 24.10.2017, 08:38   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Это я по описанию задачу не понял. Было подозрение, но обычно всем нужно так, как я написал
Тогда для Вас действительно мой способ не подходит, нужен цикл по текстовым файлам, в нём цикл по строкам каждого файла.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 24.10.2017 в 10:37.
Hugo121 вне форума Ответить с цитированием
Старый 24.10.2017, 10:34   #5
Watcher_1
Форумчанин
 
Аватар для Watcher_1
 
Регистрация: 22.06.2011
Сообщений: 325
По умолчанию

Нужны исходные файлы и пример результата в экселе.
Заказать макрос можно на сайте http://excel4you.ru/
Watcher_1 вне форума Ответить с цитированием
Старый 24.10.2017, 22:36   #6
SaylerZ
 
Регистрация: 13.10.2017
Сообщений: 4
По умолчанию

Во вложении пример.
Вложения
Тип файла: txt Пример.txt (92 байт, 130 просмотров)
Тип файла: xlsx Пример.xlsx (8.8 Кб, 13 просмотров)
SaylerZ вне форума Ответить с цитированием
Старый 24.10.2017, 23:56   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ответил на другом форуме. Но пока без кода:
Цитата:
И что, во всех файлах именно в таком порядке есть все позиции? И ничего более? Из практики такого не бывает
Я делал так - сперва в словаре собирал коллекции или кажется другие словари данных из всех текстовых файлов, и уже затем раскладывал всё на лист.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 26.10.2017, 22:47   #8
SaylerZ
 
Регистрация: 13.10.2017
Сообщений: 4
По умолчанию

Да, во всех файлах одинаковые позиции. Все файлы однотипные, там позиций 20. Всё что до ":" не меняется, меняются только значения после ":".
SaylerZ вне форума Ответить с цитированием
Старый 26.10.2017, 23:24   #9
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Уже сделал на другом форуме.
Продублирую:
Код:
Sub tt()
 
    Dim FSO
    Dim TheFolder, TheFiles, AFile, i&, el
 
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set TheFolder = FSO.GetFolder("e:\tmp\SaylerZ\")
    Set TheFiles = TheFolder.Files
    
    i = 10 'тут можно указать с какой строки начинать выгрузку
    For Each AFile In TheFiles
        If UCase(FSO.GetExtensionName(AFile.Path)) = "TXT" Then
            i = i + 1: ii = 0
            For Each el In Split(ReadTXTfile(AFile.Path), vbNewLine)
                ii = ii + 1
                Cells(i, ii) = Split(el, ":")(1)
            Next
        End If
    Next
 
End Sub
 
Function ReadTXTfile(ByVal filename As String) As String
    Set FSO = CreateObject("scripting.filesystemobject")
    Set ts = FSO.OpenTextFile(filename, 1, True): ReadTXTfile = ts.ReadAll: ts.Close
    Set ts = Nothing: Set FSO = Nothing
End Function
Можно конечно оптимизнуть (избавиться от функции и лишнего объекта в ней), но лень
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 26.10.2017 в 23:29.
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
с использованием данных текстовых файлов Регина2 Помощь студентам 2 11.04.2013 11:34
Перенос текстовых файлов виндовс/люнекс Fellics{новичок} Операционные системы общие вопросы 2 17.05.2010 01:47
Обработка символьных данных и текстовых файлов Skrip Общие вопросы C/C++ 7 17.06.2009 21:54
Обработка символьных данных и текстовых файлов Skrip Общие вопросы C/C++ 13 10.06.2009 20:51