[英]Loop to unfilter multiple excel workbooks VBA
我試圖做一個循環,以取消篩選所有工作簿的列A(因為它們相同,alwyas列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
你能告訴我這個循環有什么問題嗎? 我正在測試文件夾中的4個工作簿上嘗試它! 只有第一個未過濾,而其他沒有。 似乎循環僅在文件夾中的第一個工作簿上重復出現。
因此,在此循環中沒有錯誤消息,但結果令人不滿意。
非常感謝您的幫助。
干杯!
Workbook.Open()方法需要完整路徑和文件名。
更換
Set y = Workbooks.Open(path)
用
Set y = Workbooks.Open(FolderPath & myfile)
而且你應該很好走。 您不需要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
上面的代碼在我的計算機上的C:\\TestDirectory\\
打開每個Excel文件。 注意,請確保FolderPath
變量的末尾帶有“ \\”,否則它將查找C:\\TestDirectorySomeFileName.xlsx
,它將無法正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.