Excel VBAでフィルタリングされたデータを新しいブック(新しいExcelファイル)として保存する方法は、以下の手順になります。
1,フィルタリングを行うデータが含まれているシートを指定します。
2,フィルタリングを実行します。
3,フィルタリングされたデータを新しいブックにコピーします。
4,新しいブックを保存します。
この手順をVBAで実現していきます。
サンプルコード
以下は、この手順を実行するためのサンプルコードです。
Sub フィルター結果を新しいbookに保存() Dim sourceSheet As Worksheet Dim newBook As Workbook Dim filteredDataRange As Range ' フィルタリングを行うデータが含まれているシートを指定します Set sourceSheet = ThisWorkbook.Sheets("Sheet1") ' フィルタリングを実行します(例として、カラムAの値が"条件"のものだけを表示します) sourceSheet.Range("C1").AutoFilter Field:=3, Criteria1:="正社員" ' フィルタリングされたデータの範囲を取得します Set filteredDataRange = sourceSheet.AutoFilter.Range.SpecialCells(xlCellTypeVisible) ' 新しいブックを作成します Set newBook = Workbooks.Add ' フィルタリングされたデータを新しいブックにコピーします filteredDataRange.Copy newBook.Sheets(1).Range("A1") ' 新しいブックを保存します(ファイル名とパスを適宜変更) newBook.SaveAs "C:\Users\user\Documents\NewBook.xlsx" ' 新しいブックのファイル名と保存先パスを指定します ' フィルタリングを解除します sourceSheet.AutoFilterMode = False ' 新しいブックを閉じます(保存している場合) newBook.Close SaveChanges:=True ' SaveChangesをFalseにすると保存せずに閉じます End Sub
上記のコードでは、"Sheet1"シートのC列で値が"正社員"のものだけをフィルタリングし、そのフィルタリングされたデータを新しいブックにコピーして保存しています。新しいブックのファイル名と保存先パスは、SaveAsメソッドの引数に指定して変更してください。
また、フィルタリングを解除するために、sourceSheet.AutoFilterMode = Falseを使っています。フィルタリングを解除しないと、次回の実行時にフィルタリングが影響する可能性があるので注意してください。
新しいブックを閉じる前に必ず保存するようにしてください。newBook.Close SaveChanges:=Trueで新しいブックを保存してから閉じますが、保存せずに閉じる場合はSaveChanges:=Falseに変更してください。