如何使用文本文件加载文件path,以Excelmacros

好的,我在Excel中有一个macros,这是完美的工作。

Sub FindOpenFiles() Dim FSO As Scripting.FileSystemObject, folder As Scripting.folder, file As Scripting.file, wb As Workbook, sh As Worksheet Dim directory As String directory = "O:\test\1" Set FSO = CreateObject("Scripting.FileSystemObject") Set folder = FSO.GetFolder(directory) For Each file In folder.Files If Mid(file.Name, InStrRev(file.Name, ".") + 1) = "xls" Then Workbooks.Open directory & Application.PathSeparator & file.Name Set wb = Workbooks("Equipment Further Documentation List.xls") For Each sh In Workbooks("1.xls").Worksheets sh.Copy After:=wb.Sheets(wb.Sheets.Count) Next sh ActiveWorkbook.Close SaveChanges:=True ActiveWorkbook.CheckCompatibility = False End If Next file End Sub 

我想修改它,所以我可以从文本文件中读取文件path,运行macros并将文件path更改为文本文件中列出的另一个文件path等等。 一旦文本文件到达EOF,停止macros。

我应该如何改变代码才能实现。

 directory = "O:\test\1" 

.txt文件中的文件path由返回分隔。

谢谢。

适应你认为合适,但你应该明白了!

 Const ForReading = 1 Set oFSO = New FileSystemObject Dim txtStream As textStream Set txtStream = oFSO.OpenTextFile("C:\....\PathtoFiles.txt", ForReading) Do Until txtStream.AtEndOfStream strNextLine = txtStream.ReadLine If strNextLine <> "" Then ' Do something? End If Loop txtStream.Close 

完整的答案是:

 Sub FindOpenFiles() Const ForReading = 1 Set oFSO = New FileSystemObject Dim txtStream As TextStream Dim FSO As Scripting.FileSystemObject, folder As Scripting.folder, file As Scripting.file, wb As Workbook, sh As Worksheet Dim directory As String Set txtStream = oFSO.OpenTextFile("C:\Users\GrzegoP\Desktop\Project\test\paths.txt", ForReading) Do Until txtStream.AtEndOfStream strNextLine = txtStream.ReadLine If strNextLine <> "" Then Set FSO = CreateObject("Scripting.FileSystemObject") Set folder = FSO.GetFolder(strNextLine) For Each file In folder.Files If Mid(file.Name, InStrRev(file.Name, ".") + 1) = "xls" Then Workbooks.Open directory & Application.PathSeparator & file.Name Set wb = Workbooks("Equipment Further Documentation List.xls") For Each sh In Workbooks("1.xls").Worksheets sh.Copy After:=wb.Sheets(wb.Sheets.Count) Next sh ActiveWorkbook.Close SaveChanges:=True ActiveWorkbook.CheckCompatibility = False End If End If Next file Loop txtStream.Close End Sub