こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

エクセル フィルタで抽出したデータごとに別ファイルを作成したい(マクロ)

エクセルのフィルタで抽出したデータをタイトル行ごとコピーし、別ファイルを作る、という作業が大量にあります。これをマクロ化したいのですが良い方法はありますか?
出来ればシートに抽出条件の名前を付けて、そのファイル名で保存、までできたらありがたいです。

投稿日時 - 2008-06-27 22:39:13

QNo.4134222

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

非連続のセル範囲を、タブ区切りテキストファイルに書き出す関数を作成して、先日回答した事がありますので、オートフィルターの事例でテストしてみました。ご参考までに載せます。なぜタブ区切りテキストファイルか?答えはプログラムが楽だから。ご質問が抽象的なので、この様なやり方で、条件設定は、お好きな様にループを回して下さいとしか言えません。
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

投稿日時 - 2008-06-28 00:43:55

お礼

ありがとうございます。試してみますね。

投稿日時 - 2008-06-30 23:21:22

ANo.1

>良い方法はありますか?
そういったニーズはよくありますから、
一番手っ取り早いのは、そういうフリーなソフトを検索するのが早いんじゃないでしょうか。
http://search.vector.co.jp/search?query=excel+%95%AA%8A%84

ご自分でお作りになられるなら、AdvancedFilterメソッドが効率的です。
AdvancedFilterメソッドを使って、抽出キーとなる列から重複を除き項目を抜き出し、
抽出条件グループを作業列につくります。
さらにその抽出条件グループをLoopさせて、
AdvancedFilterメソッドで新規別Bookにデータを抽出していく事を繰り返せば良いです。

投稿日時 - 2008-06-27 23:17:16

お礼

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

投稿日時 - 2008-06-30 23:19:43

あなたにオススメの質問