Страницы: 1
RSS
Импорт txt в excel
 
Добрый день,
Может ли excel обрабатывать много файлов в формате txt с данными из папки и формировать таблицу?
Создал один txt файл с абстрактными данными и таблицу в excel.
То есть нужно данные из txt файла перекинуть в таблицу по нужным ячейкам.
Следующая строка должна будет импортироваться с другого файла txt, скажем из база2.txt и там уже другие данные в таком же формате и так далее.
Импорт из текста не помог.

Буду благодарен за помощь
 
Андрей Белый, Power Query насколько помню это может. https://www.planetaexcel.ru/techniques/24/ Так же можно поискать и другие способы на вкладке данные (эксель).
 
Сегодня была похожая задача.
Такой вариант соберёт данные с файлов в один.
Код
Option Explicit

Dim fso As Object

Sub СобратьФайлы()
    Dim arrFiles As Variant
    arrFiles = ShowFileDialog()
    If IsEmpty(arrFiles) Then Exit Sub
    Dim Application_Calculation As Long
    Application_Calculation = Application.Calculation
    Application.Calculation = xlCalculationManual
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    Dim wb As Workbook
    Set wb = Workbooks.Add(1)
    Dim rOut As Range
    Set rOut = wb.Sheets(1).Cells(1, 1)
    Dim vFile As Variant
    For Each vFile In arrFiles
        JobFile vFile, rOut
    Next
     
    Application.Calculation = Application_Calculation
    wb.Saved = True
End Sub
 
Sub JobFile(ByVal sFile As String, rOut As Range)
    With fso.OpenTextFile(sFile, 1)
        rOut.Value = .ReadAll
        .Close
    End With
    Set rOut = rOut.Cells(2, 1)
End Sub
 
Function ShowFileDialog() As Variant
    Dim oFD As FileDialog
    Dim lf As Long
    'назначаем переменной ссылку на экземпляр диалога
    Set oFD = Application.FileDialog(msoFileDialogFilePicker)
    With oFD 'используем короткое обращение к объекту
    'так же можно без oFD
    'With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = True
        .Title = "Выбрать файлы" 'заголовок окна диалога
        .Filters.Clear 'очищаем установленные ранее типы файлов
        '.Filters.Add "Excel files", "*.xls*;*.xla*", 1 'устанавливаем возможность выбора только файлов Excel
        .Filters.Add "Text files", "*.txt", 1 'добавляем возможность выбора текстовых файлов
        .FilterIndex = 1 'устанавливаем тип файлов по умолчанию - Text files(Текстовые файлы)
        .InitialFileName = ThisWorkbook.Path & "\"
        .InitialView = msoFileDialogViewDetails 'вид диалогового окна(доступно 9 вариантов)
        If oFD.Show = 0 Then Exit Function 'показывает диалог
        'цикл по коллекции выбранных в диалоге файлов
        Dim arr As Variant
        ReDim arr(1 To .SelectedItems.Count)
        For lf = 1 To .SelectedItems.Count
            arr(lf) = .SelectedItems(lf) 'считываем полный путь к файлу
        Next
        ShowFileDialog = arr
    End With
End Function
 
,спасибо за код. Запускаю в макросах "СобратьФайл" выбераю нужный txt все загружается в одну ячейку excel прям как в txt файле. Что я не правильно делаю?
 
,получилось так, как можно теперь раскидать по ячейкам? Благодарю.
 
Андрей Белый, а какая логика разбиения по ячейкам? Этот txt вручную что ли делается? При выгрузке данных откуда-то разделитель полей единый. А тут то "/", то "." в одной строке. ВО всех строках разный. В общем, это не "база", а набор случайного текста :)
В PQ автоматом разобьется по строкам (файл "база1.txt" должен быть в одной папке с этим excel файлом):
Код
let
  src   = File.Contents ( Excel.CurrentWorkbook(){[ Name = "filePath" ]}[Content]{0}[Путь к файлу] ),
  toTbl = Table.FromColumns ( { Lines.FromBinary ( src, null, null, 1251 ) }, type table [ Данные = text ] )
in
  toTbl
Изменено: surkenny - 28.03.2022 17:03:39
 
,   спасибо, таблица формируется автоматически программой и сохраняется в отдельной папке отдельным файлом.
Данные в таблице придуманы от "балды"))). Программа данные разделяется разными символами "/" "." "    "
Вот и хотелось бы автоматизировать сбор данных из несколько сотни текстовых файлов в одну таблицу)
Изменено: Андрей Белый - 29.03.2022 07:48:26
 
Пришла другая мысль. Нужна Ваша помощь доработать формулу ПОДСТАВИТЬ( ПСТР( (ПОИСК. Можно ли написать формулу которая могла бы искать текст между определнными символами и извлекать текст между ними в определенную ячейку. Прилагаю файл с началом. Дальше написать формулу у меня не получается ((
 
Код
=ФИЛЬТР.XML("<j><i>"&ПОДСТАВИТЬ(A1;"/";"</i><i>")&"</i></j>";"//i[1]")
=ФИЛЬТР.XML("<j><i>"&ПОДСТАВИТЬ(A1;".";"</i><i>")&"</i></j>";"//i[2]")
=ПСТР(ФИЛЬТР.XML("<j><i>"&ПОДСТАВИТЬ(A1;"рождения.";"</i><i>")&"</i></j>";"//i[2]");1;10)
 
,  спасибо за код. только можете помочь разобраться в нем)) что занчит <j><i> //i[1] //i[2] ;1;10
 
Деление слипшегося текста функцией ФИЛЬТР.XML (planetaexcel.ru)
 
А дата, которую по идее не нужно делить, не разделится по /?
По идее, нужно в программе нормально данные выгрузить, чтобы разделитель, к примеру, табуляция была.
 
у меня что то не получается с использованием формулы Фильтр.


surkenny, Дата пусть делится, потом склею.
Страницы: 1
Наверх