从文本文件vba读取数据

我有几个子文件夹。 每个都有文本文件。 可以将文本文件分组在一个excel文件中,以便每个excel选项卡都有一个文件。 我devise了代码来完成这个任务。

Option Explicit Sub read_files() Dim ReadData As String Dim i As Double Dim objfso As Object Dim objfolder As Object Dim obj_sub_folder As Object Dim objfile As Object Dim current_worksheet As Worksheet Dim new_workbook As Workbook Dim path As String Dim filestream As Integer Set objfso = CreateObject("Scripting.FilesystemObject") Set objfolder = objfso.getfolder("Z:\test\") Set new_workbook = Workbooks.Add i = 1 For Each obj_sub_folder In objfolder.subfolders i = 1 ReadData = "" For Each objfile In obj_sub_folder.Files Set current_worksheet = new_workbook.Worksheets.Add current_worksheet.Name = objfile.Name filestream = FreeFile() path = "Z:\test\" & obj_sub_folder.Name & "\" & objfile.Name Open path For Input As #filestream Do Until EOF(filestream) Input #filestream, ReadData current_worksheet.Cells(i, 1).Value = ReadData i = i + 1 Loop Close filestream Next ActiveWorkbook.SaveAs "Z:\test\" & obj_sub_folder.Name Next End Sub 

但是,在循环浏览子文件夹时,macros将保存以前子文件夹中的文件的数据,但是我希望保存来自特定子文件夹的文件的数据。 你会如此善意的解释我的错误在哪里?

谢谢!

编辑

这里是工作代码

 Option Explicit Sub run() read_files ("Z:\test\") End Sub Sub read_files(path_to_folder As String) Dim ReadData As String Dim i As Double Dim objfso As Object Dim objfolder As Object Dim obj_sub_folder As Object Dim objfile As Object Dim current_worksheet As Worksheet Dim new_workbook As Workbook Dim path As String Dim filestream As Integer Set objfso = CreateObject("Scripting.FilesystemObject") Set objfolder = objfso.getfolder(path_to_folder) i = 1 For Each obj_sub_folder In objfolder.subfolders Set new_workbook = Workbooks.Add For Each objfile In obj_sub_folder.Files Set current_worksheet = new_workbook.Worksheets.Add current_worksheet.Name = objfile.Name filestream = FreeFile() path = path_to_folder & obj_sub_folder.Name & "\" & objfile.Name Open path For Input As #filestream Do Until EOF(filestream) Input #filestream, ReadData current_worksheet.Cells(i, 1).Value = ReadData i = i + 1 Loop Close filestream i = 1 Next ActiveWorkbook.SaveAs path & obj_sub_folder.Name ActiveWorkbook.Close Next 

结束小组

如果您希望每个子文件夹的数据都位于单独的工作簿中,则需要在For Each obj_sub_folder循环中移动new_workbook定义,并在保存后closures该工作簿:

 Set objfso = CreateObject("Scripting.FilesystemObject") Set objfolder = objfso.getfolder("Z:\test\") i = 1 For Each obj_sub_folder In objfolder.subfolders Set new_workbook = Workbooks.Add i = 1 ReadData = "" For Each objfile In obj_sub_folder.Files Set current_worksheet = new_workbook.Worksheets.Add current_worksheet.Name = objfile.Name filestream = FreeFile() path = "Z:\test\" & obj_sub_folder.Name & "\" & objfile.Name Open path For Input As #filestream Do Until EOF(filestream) Input #filestream, ReadData current_worksheet.Cells(i, 1).Value = ReadData i = i + 1 Loop Close filestream Next new_workbook.SaveAs "Z:\test\" & obj_sub_folder.Name new_workbook.Close Next