• 締切済み

1つのエクセルを項目ごとに分割して別ファイルへ

以前質問・回答のあったこちらを参考にマクロをさくせいしました。 https://sp.okwave.jp/qa/q3291205.html このうちの下記のマクロなのですが、こちらを少しアレンジしたいと考えております。 項目の分割をA列→C列に変更 さらに、分割したファイルに違う作業を加えたいのですが、どこを変更してどこに追加をしたら良いか教えていただけないでしょうか。 マクロ初心者なので、基本的な質問ですみません。 Sub Test() Dim wb As Workbook, tws As Worksheet, r As Range Dim myList As New Collection, fPath As String On Error Resume Next fPath = ActiveWorkbook.Path & "\" Set tws = ActiveSheet With tws   For Each r In .Range(.Range("A2"), .Range("A65536").End(xlUp))     myList.Add r.Value, CStr(r.Value)   Next r      .Range("A1").AutoFilter   If Not .AutoFilterMode Then .Range("A1").AutoFilter      For i = 1 To myList.Count     Set wb = Workbooks.Add(xlWBATWorksheet)     .Range("A1").AutoFilter field:=1, Criteria1:=myList(i)     .Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy _            Destination:=wb.Worksheets(1).Range("A1")     wb.SaveAs Filename:=fPath & myList(i) & ".xls"   Next i      .Range("A1").AutoFilter End With Set myList = Nothing End Sub

みんなの回答

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.1

示されたコードを、 C列に埋まっている文字列で分解するコードに変更してみました。 よかったら参考にしてください。 ※0 C列に変えるために変更した箇所 ※1 変数の定義が足りないようなので追加 ※2 分解後のシートを保存する前に加工する例 ※3 保存する拡張子を 今仕様のxlsxに変更 ※4 分解後のブックを保存しているものの閉じていないので加筆 Sub Test()    Dim wb As Workbook, tws As Worksheet, r As Range  Dim myList As New Collection, fPath As String  Dim i As Integer                   '<<< ※1  On Error Resume Next  fPath = ActiveWorkbook.Path & "\"  Set tws = ActiveSheet  With tws   For Each r In .Range(.Range("C2"), .Range("C65536").End(xlUp)) '<<< ※0     myList.Add r.Value, CStr(r.Value)        Next r     .Range("A1").AutoFilter   If Not .AutoFilterMode Then .Range("A1").AutoFilter     For i = 1 To myList.Count        Set wb = Workbooks.Add(xlWBATWorksheet)    .Range("A1").AutoFilter field:=3, Criteria1:=myList(i)   '<<< ※0    .Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy _           Destination:=wb.Worksheets(1).Range("A1")              wb.Worksheets(1).Cells(1, 3).Interior.Color = rgbGreen  '<<< ※2              wb.SaveAs Filename:=fPath & myList(i) & ".xlsx"    '<<< ※3    wb.Close                       '<<< ※4       Next i     .Range("A1").AutoFilter  End With  Set myList = Nothing End Sub

関連するQ&A