VBAで自動化 VBA一覧 データ整形・分割 分割・区切り

【VBA】フィルター結果を新しいbookに保存する方法

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に変更してください。

-VBAで自動化, VBA一覧, データ整形・分割, 分割・区切り