2017-06-07 18 views
0

すべてのワークブックの列Aをフィルタリングするためにループを実行しようとしています(これらは同じですが、列Aも同じです)。 空のセルをろ過するフィルターとして、すべてのセルを表示します。 多くのフォルダ(50以上)がありますので、ループは非常に便利で、コードの次のステップで重要です。Loop to unfilter multiple ExcelワークブックVBA

私は1つのフォルダのために動作するコードがあります。

`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つのワークブックで試しています!最初のものだけがフィルタリングされず、他のものはフィルタリングされません。ループは、フォルダ内の最初のブックのみをリペアしているようです。

このループではエラーメッセージは表示されませんが、結果は満足できません。

ありがとうございました。

乾杯!

答えて

1

Workbook.Open()メソッドには完全なパスとファイル名が必要です。

Set y = Workbooks.Open(FolderPath & myfile) 

Set y = Workbooks.Open(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ファイルを開きます私のマシンで。 N.b. FolderPath変数の末尾に「\」があることを確認してください。そうでない場合は、C:\TestDirectorySomeFileName.xlsxが検索されますが、これは機能しません。

+0

私はそれを試しました!それは動作しませんでした!エラーメッセージと変更はありません:( –

+0

これは完璧にここで動いていますあなたはマックではありませんか? –

+0

私はそれを見つけました!あなたの助けに感謝します:) –

関連する問題