プロが教えるわが家の防犯対策術!

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

A 回答 (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
    • good
    • 1
この回答へのお礼

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

お礼日時:2008/06/30 23:21

>良い方法はありますか?


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

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

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

お礼日時:2008/06/30 23:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!