2013-07-11 38 views
2

好吧,我有一个宏在Excel中完美的工作。如何使用文本文件加载文件路径为Excel宏

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 

我想修改它,所以我可以在文件路径从一个文本文件中读取运行宏,并切换到另一个文本文件等列出的文件路径。只要文本文件到达EOF,就停止宏。

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

directory = "O:\test\1" 

.txt文件中的文件路径由return分隔。

谢谢。

回答

2

适应你所见,但你应该明白!

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 
+0

试图执行它,但是对它失去了myslef ... – Saint

0

完整的答案是:

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 
相关问题