Импортируйте текстовый файл в Excel и отформатируйте текст в столбец
Я пытаюсь импортировать файл.txt в Excel с помощью кода VBA, а затем форматировать содержимое с помощью команды text to column.
Файл TXT содержит содержимое в следующем:
DATE | 1 | 2 | 3 | 4 | Something ||||| Not Sure |||||
DATE | 5 | 6 | 7 | 8 | New ||||| Whatever |||||
В настоящее время, используя код, который я нашел и ударил вместе, мне удалось сделать это далеко
Sub Sample()
Dim MyData As String, strData() As String, myFile As String
myFile = Application.GetOpenFilename()
Open myFile For Binary As #1
MyData = Space$(LOF(1))
Get #1, , MyData
Close #1
strData() = Split(MyData, "|")
End Sub
Это просто получает все данные из текстового файла и разделяет каждый элемент в массив.
Я хотел бы поместить элементы из массива в столбцы Excel, начиная с Range("A5") И учитывать каждую новую строку.
Помогите?
(Изменить: я думал о перемещении вниз по строке в любое время, когда я получаю выбор пустого массива, но в каждой строке много пробелов, и это не сработает. Кроме того, длина строк не согласована в зависимости от содержимого.)
1 ответ
Вам нужно разделить данные двумя способами: на строки, используя символ NewLine, затем на ячейки, используя |
Обратите внимание, что разделение строк в вашем текстовом файле может быть vbNewLine
, Если этот код не разбивается на строки, это первое место для поиска.
Чтобы завершить ваш код, как изложено, попробуйте
Sub Sample()
Dim MyData As String
Dim lineData() As String, strData() As String, myFile As String
Dim i As Long, rng As Range
' lets make it a little bit easier for the user
myFile = Application.GetOpenFilename("Text Files (*.txt), *.txt")
Open myFile For Binary As #1
MyData = Space$(LOF(1))
Get #1, , MyData
Close #1
' Split into wholes line
lineData() = Split(MyData, vbNewLine)
Set rng = Range("A5")
' For each line
For i = 0 To UBound(lineData)
' Split the line
strData = Split(lineData(i), "|")
' Write to the sheet
rng.Offset(i, 0).Resize(1, UBound(strData) + 1) = strData
Next
End Sub
В качестве альтернативы, трактуйте файл.txt как текст
Sub Sample()
Dim fn As Integer
Dim MyData As String
Dim lineData As String, strData() As String, myFile As String
Dim i As Long, rng As Range
myFile = Application.GetOpenFilename("Text Files (*.txt), *.txt")
Set rng = Range("A5")
' Lets not rely on Magic Numbers
fn = FreeFile
Open myFile For Input As #fn
i = 1
Do While Not EOF(fn)
Line Input #fn, lineData
strData = Split(lineData, "|")
rng.Cells(i, 1).Resize(1, UBound(strData) + 1) = strData
i = i + 1
Loop
Close #fn
End Sub