- 締切済み
エクセル フィルタで抽出したデータごとに別ファイルを作成したい(マクロ)
エクセルのフィルタで抽出したデータをタイトル行ごとコピーし、別ファイルを作る、という作業が大量にあります。これをマクロ化したいのですが良い方法はありますか? 出来ればシートに抽出条件の名前を付けて、そのファイル名で保存、までできたらありがたいです。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- mitarashi
- ベストアンサー率59% (574/965)
非連続のセル範囲を、タブ区切りテキストファイルに書き出す関数を作成して、先日回答した事がありますので、オートフィルターの事例でテストしてみました。ご参考までに載せます。なぜタブ区切りテキストファイルか?答えはプログラムが楽だから。ご質問が抽象的なので、この様なやり方で、条件設定は、お好きな様にループを回して下さいとしか言えません。 Sub test() Dim targetRange As Range Dim extractedRange As Range Set targetRange = ActiveSheet.Range("a1").CurrentRegion If ActiveSheet.AutoFilterMode = False Then targetRange.AutoFilter targetRange.AutoFilter Field:=1, Criteria1:="あ" Set extractedRange = targetRange.SpecialCells(xlCellTypeVisible) Call saveToText(extractedRange, ThisWorkbook.Path & "\" & "test.txt") targetRange.AutoFilter Field:=1 End Sub Private Sub saveToText(targetRange As Range, filepath As String) Dim fso As Object Dim i As Long, j As Long Dim oneLine As String Dim area As Range Set fso = CreateObject("Scripting.FileSystemObject") With fso.CreateTextFile(filepath) For Each area In targetRange.Areas For i = 1 To area.Rows.Count oneLine = "" For j = 1 To area.Columns.Count If oneLine = "" Then oneLine = area.Cells(i, j).Text Else oneLine = oneLine & vbTab & area.Cells(i, j).Text End If Next j .writeLine oneLine Next i Next area .Close End With Set fso = Nothing End Sub
- end-u
- ベストアンサー率79% (496/625)
>良い方法はありますか? そういったニーズはよくありますから、 一番手っ取り早いのは、そういうフリーなソフトを検索するのが早いんじゃないでしょうか。 http://search.vector.co.jp/search?query=excel+%95%AA%8A%84 ご自分でお作りになられるなら、AdvancedFilterメソッドが効率的です。 AdvancedFilterメソッドを使って、抽出キーとなる列から重複を除き項目を抜き出し、 抽出条件グループを作業列につくります。 さらにその抽出条件グループをLoopさせて、 AdvancedFilterメソッドで新規別Bookにデータを抽出していく事を繰り返せば良いです。
お礼
ありがとうございました。
お礼
ありがとうございます。試してみますね。