Извлечение информации из текстового файла в VBA - PullRequest
0 голосов
/ 20 января 2019

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

Я рассмотрел несколько примеров извлечения текста в Интернете, но самое быстрое, что я получил, - это получение одной строки в одной ячейке, а затем зависание Excel. Все остальные только что заморозили Excel после того, как я поставил свои условия.

Мои текущие попытки включают следующее:

Do Until EOF #1, textLine
Line Input #1, textLine

    Do Until Count = Len(text line) + 1
    Text = Text & Mid(textLine, Count, Count)
    If Right(text, 1) = "," Then
    textImport = Left(text, Count - 1)
    Cells(rowCount, column count) = textImport
    Text = ""
     columnCount = columnCount + 1
    Loop

    rowCount = rowCount + 1

Loop

Может кто-нибудь посоветовать, где я иду не так? Я не могу предоставить общий доступ к данным или текстовому файлу из-за характера проблемы и задействованных данных.

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Попробуйте, если это не файл CSV, который можно открыть в Excel.

Sub readCSVLikeFile()
    r = 1
    Open "<path of the file> For Input As #1
    While Not EOF(1)
        Line Input #1, txtline
        v = Split(txtline, ",")
        Range(Cells(r, 1), Cells(r, UBound(v) + 1)) = v
        r = r + 1
    Wend
    Close #1

End Sub
0 голосов
/ 20 января 2019

QueryTable Import

Вы можете сделать это:

Sub QueryImport()

    Const cSheet As Variant = "Sheet1"  ' Worksheet Name/Index
    Const cSource As String = "A1"      ' Source Range

    Dim vntFile As Variant  ' Source Array

    vntFile = Application.GetOpenFilename("Text Files (*.txt), *.txt")

    If vntFile <> False Then
        With ThisWorkbook.Worksheets(cSheet).QueryTables _
                .Add(Connection:="TEXT;" & vntFile, _
                Destination:=ThisWorkbook.Worksheets(cSheet).Range(cSource))
            .Name = "Pets"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = xlWindows
            .TextFileStartRow = 1
            .TextFileParseType = xlDelimited
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = True
            .TextFileSemicolonDelimiter = False
            .TextFileCommaDelimiter = True
            .TextFileSpaceDelimiter = False
            .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
        End With
    End If
End Sub

, который откроет диалоговое окно, в котором вы можете выбрать файл, который затем будет импортирован в Excel, а затем вы сможете дополнительно манипулировать им, что выходит за рамки из-за недостатка информации. Разместите часть результата в другом вопросе, чтобы получить желаемый результат.

...