我通过@Scott Holtzman发现了这段代码,我需要稍微调整一下以符合我的需求。该代码将每行放在一个文本文件中,并将其放入Excel工作表(A1,B1,C1等)中的单独列中,每个文本文件存储在一个单独的行(1,2,3等)中。首先,我希望它只将文本放入Excel表格中,如果行以特定文本开始,则我希望它仅将每行中的一些文本复制到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中。认为这是因为文本文档中的每一行都有一个单元格 - 即使没有写入任何内容。
所以,我正确理解您的文本文件中包含17行(“A1”,“A2”类型的14)...?如果不是,你能否提供更准确的信息,说明你的文件是什么样的?我是否正确理解您实际上想要为每个文件填充一个Excel行,其中每列对应于文件中的一行? – trincot
尝试根据您的评论更新问题,是的,您理解正确,第1行中的文本文件A中包含A1,B1,C1等中的行,第2行中的文本文件B中包含A2,B2,C2中的行等等。 – Einar