循环来清除多个Excel工作簿VBA

我正在尝试做一个循环来取消所有的工作簿列A(因为他们是相同的,alwyas列A)。 我想显示所有的单元格作为filter的空单元格。 我有很多文件夹(超过50个),所以循环对我的代码的下一步非常有用和重要。

我有一个代码适用于一个文件夹:

`Sub unfilterr() Dim y As Workbook, myfile, FolderPath, path Dim ws As Excel.Worksheet Set y = Workbooks.Open("Z:\VBA\Copie de Devis_65 Version avec G35.xlsx") With y.Worksheets("Para RF") If Not y.Worksheets("Para RF").AutoFilter Is Nothing Then y.Sheets("Para RF").Range("A1").AutoFilter Field:=1 End If End With End Sub` 

现在试图做循环:

 `Sub unfilter1() Dim y As Workbook, myfile, FolderPath, path Dim ws As Excel.Worksheet '## Open workbooks first: Application.ScreenUpdating = False Application.EnableEvents = False Application.Calculation = xlCalculationManual FolderPath = "Z:\VBA\Test\" path = FolderPath & "*.xls*" myfile = Dir(FolderPath & "*.xls*") Do While myfile <> "" Set y = Workbooks.Open(path) 'I put path instead of myfile because I have error if I put myfile Set ws = y.Worksheets("Para RF") 'With ws If Not ws.AutoFilter Is Nothing Then y.Sheets("Para RF").Range("A1").AutoFilter Field:=1 End If 'End With myfile = Dir() y.Close saveChanges:=True Loop MsgBox ("Task Complete") End Sub 

你能告诉这个循环有什么问题吗? 我在testing文件夹中的4个工作簿上尝试它! 只有第一个没有过滤,而其他的没有。 这似乎只是循环重复在文件夹中的第一个工作簿。

所以这个循环没有错误信息,但结果是令人不满意的。

非常感谢您的帮助。

干杯!

Workbook.Open()方法需要一个完整的path和文件名。

更换

  Set y = Workbooks.Open(path) 

 Set y = Workbooks.Open(FolderPath & myfile) 

你应该很好走。 你不需要pathvariables。

编辑:我最小化您的整个脚本到最低程度,以遍历所有“ .xls ”文件,并打开所有closures它们在一个文件夹中:

 Sub OpenWorkbooks() Dim y As Workbook Dim myfile As String Dim FolderPath As String FolderPath = "C:\TestDirectory\" myfile = Dir(FolderPath & "*.xls*") Do While myfile <> "" Set y = Workbooks.Open(FolderPath & myfile) myfile = Dir() Loop End Sub 

上面打开我的机器上的C:\TestDirectory\每个Excel文件。 Nb确保你在FolderPathvariables的末尾有“\”,否则它会查找C:\TestDirectorySomeFileName.xlsx ,这是不行的。