因此,此Excel宏可以很好地从特定文件夹中读取多个txt文件,并在第一个Excel工作表中插入所有行。我想编辑这段代码,以便宏跳过每个txt文件的第一行..
有人可以帮忙吗?
Sub test1()
Dim fso As FileSystemObject
Dim folder As folder
Dim file As file
Dim FileText As TextStream
Dim TextLine As String
Dim Items() As String
Dim i As Long
Dim cl As Range
' Get a FileSystem object
Set fso = New FileSystemObject
' get the directory you want
Set folder = fso.GetFolder("C:\Users\Desktop\TXT")
' set the starting point to write the data to
Set cl = ActiveSheet.Cells(1, 1)
' Loop thru all files in the folder
For Each file In folder.Files
' Open the file
Set FileText = file.OpenAsTextStream(ForReading)
' Read the file one line at a time
Do While Not FileText.AtEndOfStream
TextLine = FileText.ReadLine
' Parse the line into | delimited pieces
Items = Split(TextLine, vbTab)
' Put data on one row in active sheet
cl.Value = file.Name
' Put data on one row in active sheet
For i = 0 To UBound(Items)
cl.Offset(0, i + 1).Value = Items(i)
Next
' Move to next row
Set cl = cl.Offset(1, 0)
Loop
' Clean up
FileText.Close
Next file
Set FileText = Nothing
Set file = Nothing
Set folder = Nothing
Set fso = Nothing
End Sub
答案 0 :(得分:2)
选项1预先阅读第一行
在开始Do While循环之前,请添加以下行:
If Not FileText.AtEndOfStream Then TextLine = FileText.ReadLine
这样你就会读到第一行(如果有的话)而你的Do While循环只会读取后续行
选项2之后删除excel中的第一行
另一种解决方案可能是在脚本导入所有文件后删除excel中的第一行。
您可能必须具体说明这适用于哪些列,因为我不确定活动导入是否是唯一的(否则您将删除以前不应删除的导入值!