Как импортировать определенный текст из файлов в Excel?
Я нашел этот код @ Scott Holtzman, и мне нужно немного подправить его, чтобы он соответствовал моим потребностям. Этот код берет каждую строку в текстовом файле и помещает ее в отдельные столбцы на листе Excel (A1, B1, C1 и т. Д.), Каждый текстовый файл хранится в отдельной строке (1,2,3 и т. Д.). Во-первых, я хочу, чтобы текст помещался в лист Excel только в том случае, если строка начинается с определенного текста, во-вторых, я хочу, чтобы он копировал только часть текста из каждой строки в лист Excel.
Sub ReadFilesIntoActiveSheet()
Dim fso As FileSystemObject
Dim folder As folder, file As file, FileText As TextStream
Dim TextLine As String, Items() As String
Dim i As Long, cl As Range
' Get a FileSystem object
Set fso = New FileSystemObject
' get the directory you want
Set folder = fso.GetFolder("D:\YourDirectory\")
Dim x As Long
x = 1 'to offset rows for each file
' Loop thru all files in the folder
For Each file In folder.Files
' set the starting point to write the data to
Set cl = ActiveSheet.Cells(x, 1)
' Open the file
Set FileText = file.OpenAsTextStream(ForReading)
Dim j As Long
j = 0 'to offset columsn for each line
' Read the file one line at a time
Do While Not FileText.AtEndOfStream
TextLine = FileText.ReadLine 'read line
cl.Offset(, j).Value = TextLine 'fill cell
j = j + 1
Loop
' Clean up
FileText.Close
x = x + 1
Next file
Set FileText = Nothing
Set file = Nothing
Set folder = Nothing
Set fso = Nothing
End Sub
Вот как выглядят мои текстовые файлы:
From:NameName 'want all text except the "FROM:"
Date:yyyy.mm.dd 'want all text except the "Date:"
Type: XXXXXXXXX ' I don't want this line into excel
To: namename ' I don't want this line into excel
----------------------------- xxxxxxx ---------------------
A1: Tnr xxxxxxxxxxxxx 'want all text except the "A1: Tnr" only next 13char
A2: texttext 'want all text except the "A2:"
An: 'A1 and up to A14
A14: texttext 'want all text except the "A14:"
------------------------------ xxxxxx ----------------------
Всего в текстовом файле 22 строки.
И если возможно использовать FROM :, DATE :, A1: до A14: в качестве заголовков в первом ряду, который будет эпическим.
попытался гуглить мой путь к нему, и попытался немного с этим:
TextLine = FileText.ReadLine 'read line
If InStr(TextLine, "A1:")
но это работает только для одной строки, и я не могу заставить его работать с несколькими строками. Кроме того, он помещает вывод в ячейку F1 вместо A1. думаю, это потому, что каждая строка в текстовом документе получает одну ячейку, даже если в нее ничего не записано.