Excel Power Query Импорт текстовых файлов - PullRequest
0 голосов
/ 17 января 2020

Я работаю над проектом по автоматизации импорта и анализа файлов .txt с помощью Power Query.

У меня есть папка с несколькими файлами, которые принимаются ежедневно. Я копирую файлы, которые мне нужно прочитать, в папку, которая связана с запросом. Перейдя в Данные -> Получить данные -> из файла -> из папки.

Каждый файл содержит 800 символов, а символы с позиций с 11 по 12 (коды) обозначают тип информации, который также относится к каждой строке.

Мне нужны только файлы, позиция 11-12 которых равна 50. Когда я получаю исходную папку, я преобразовываю данные, устанавливаю разделитель с позициями (0, 10, 12), который разделяет коды, которые я нужно, а затем установить фильтр для значения 50. Это гарантирует, что каждый раз, когда я refre sh файл, я получаю все строки, которые содержат 50 в качестве числового кода.

Однако файлы импортируются не полностью и отсутствуют строки. Когда я открою текст, скопируйте из блокнота и вставьте в Excel; Я получаю несколько строк, и когда я использую функцию MID для разделения символов 11-12, я получаю множество кодов 50.

Но я не получаю количество строк и кодов 50 с Power Query. Он полностью пропускает строки с указанным c кодом.

Обычный метод Power Query работал до нового года, а затем просто остановился.

1 Ответ

0 голосов
/ 17 января 2020

Извините, если я упустил этот момент, но я не думаю, что PowerQuery - это решение. Я худой VBA могу делать что хочешь. Попробуйте это решение, чтобы импортировать данные из нескольких текстовых файлов в один лист, а затем взять их оттуда (т. Е. Один шаг за раз ...)

Sub Test()
'UpdatebyExtendoffice6/7/2016
    Dim xWb As Workbook
    Dim xToBook As Workbook
    Dim xStrPath As String
    Dim xFileDialog As FileDialog
    Dim xFile As String
    Dim xFiles As New Collection
    Dim I As Long
    Set xFileDialog = Application.FileDialog(msoFileDialogFolderPicker)
    xFileDialog.AllowMultiSelect = False
    xFileDialog.Title = "Select a folder [Kutools for Excel]"
    If xFileDialog.Show = -1 Then
        xStrPath = xFileDialog.SelectedItems(1)
    End If
    If xStrPath = "" Then Exit Sub
    If Right(xStrPath, 1) <> "\" Then xStrPath = xStrPath & "\"
    xFile = Dir(xStrPath & "*.txt")
    If xFile = "" Then
        MsgBox "No files found", vbInformation, "Kutools for Excel"
        Exit Sub
    End If
    Do While xFile <> ""
        xFiles.Add xFile, xFile
        xFile = Dir()
    Loop
    Set xToBook = ThisWorkbook
    If xFiles.Count > 0 Then
        For I = 1 To xFiles.Count
            Set xWb = Workbooks.Open(xStrPath & xFiles.Item(I))
            xWb.Worksheets(1).Copy after:=xToBook.Sheets(xToBook.Sheets.Count)
            On Error Resume Next
            ActiveSheet.Name = xWb.Name
            On Error GoTo 0
            xWb.Close False
        Next
    End If
End Sub

После того, как все данные из всех ваших Тестовые файлы находятся на одном листе, вы можете делать все что угодно. Пожалуйста, оставьте сообщение с комментариями, предложениями и прочим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...