循环以取消筛选多个excel工作簿VBA

循环以取消筛选多个excel工作簿VBA,vba,excel,Vba,Excel,我正在尝试执行一个循环,以取消对所有工作簿的a列的过滤(因为它们是相同的,总是a列)。 我想把所有的单元格都显示为过滤器,以清除空单元格。 我有很多文件夹(超过50个),因此循环对于我代码的下一步非常有用和重要 我有一个适用于一个文件夹的代码: `Sub unfilterr() Dim y As Workbook, myfile, FolderPath, path Dim ws As Excel.Worksheet Set y = Workbooks.Open("Z:\VBA\Copie de

我正在尝试执行一个循环,以取消对所有工作簿的a列的过滤(因为它们是相同的,总是a列)。 我想把所有的单元格都显示为过滤器,以清除空单元格。 我有很多文件夹(超过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
`Sub unfilter1()
将y设置为工作簿、myfile、FolderPath、path
将ws设置为Excel.Worksheet
“##首先打开工作簿:
Application.ScreenUpdating=False
Application.EnableEvents=False
Application.Calculation=xlCalculationManual
FolderPath=“Z:\VBA\Test\”
path=FolderPath&“*.xls*”
myfile=Dir(FolderPath&“*.xls*”)
当我的文件“”时执行此操作
Set y=Workbooks.Open(path)'我放的是path而不是myfile,因为如果我放的是myfile,我会出错
设置ws=y.工作表(“第RF段”)
“与ws
如果不是,那么ws.AutoFilter什么都不是
y、 表格(“段落RF”)。范围(“A1”)。自动筛选字段:=1
如果结束
"以
myfile=Dir()
y、 关闭保存更改:=True
环
MsgBox(“任务完成”)
端接头
你能告诉我这个循环有什么问题吗!? 我正在测试文件夹中的4本工作簿上尝试它!只有第一个未过滤,而其他未过滤。似乎循环仅在文件夹中的第一个工作簿上重复

因此,在这个循环中没有错误消息,但结果并不令人满意

非常感谢你的帮助

干杯

工作簿.Open()方法需要完整路径和文件名

替换

 Set y = Workbooks.Open(path)

你应该可以走了。 您不需要path变量

编辑:我将您的整个脚本最小化,以循环浏览所有“.xls”文件,并在文件夹中打开所有这些文件:

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
子打开工作簿()
将y作为工作簿
将myfile设置为字符串
将FolderPath设置为字符串
FolderPath=“C:\TestDirectory\”
myfile=Dir(FolderPath&“*.xls*”)
当我的文件“”时执行此操作
设置y=Workbooks.Open(FolderPath&myfile)
myfile=Dir()
环
端接头
上述操作将在我的计算机上的
C:\TestDirectory\
中打开每个Excel文件。
注意:请确保在
FolderPath
变量的末尾有“\”,否则它将查找
C:\TestDirectorySomeFileName.xlsx
,但它不起作用。

我试过了!没用!和Begging一样,没有错误信息,也没有更改:(嗯,这很奇怪。这在这里运行得很好。你不是在mac上,是吗?这是我的错误:)我写了
saveChanges:=False
所以更改没有被保存。哈哈哈,是的。很高兴你找到了。
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