データを分割してCSVで保存 Excel2013 マクロ講座 76回

大きなデータを分割コピーしてCSVで保存する

今回は、マクロ講座75c回からの続き的な内容です。
75回のコードを応用して、大きなデータを分割コピーしてCSVで保存するというマクロです。
コードも長くなってしまうのですが、前回から読み進めて来れば、大丈夫だと思います。

(サンプルファイルは、こちらから マクロ76回サンプルデータ

手動でCSVを作成する場合

ExcelシートのデータをCSV形式のデータとして保存したい渇合は、[名前を付けて保存]コマンドを実行して、[ファイルの種類]を CSV(カンマ区切り)」に選択してやればいいのです。
1枚だけのCSVファイルを作成するならそれでもいいのですが、複数シートとなると面倒です。
というのも、現在表示されているシートしか保存できず、作成したいCSVファイル数分だけ何度も繰り返す必要があり、そのたびに何度もアラートダイアログが表示されるからです。
データを分割してCSVで保存マクロ1

SaveAs メソッドを使ってCSV

マクロ講座75c回で登場した SaveAs メソッドには、引数が非常に多かったですね。でもFileNameしか使いませんでした。 今度は2番めの引数 FileFormat これを使ってCSVにするんです。
データを分割してCSVで保存マクロ2
引数のFileName,FileFormat,CreateBackup,この3つを使います。(MacならLocalも)
Wb.SaveAs Filename:=ThisWorkbook.Path & "\CSV\" & ファイル名, FileFormat:=xlCSV, CreateBackup:=False
そしてCSVファイルを保存する場所なんですが、場所の指定も、FileNameに入れてしまうわけです。 Filename:=ThisWorkbook.Path & "\CSV\" & ファイル名
で ThisWorkbook.Path 内にある CSVフォルダ に ファイル名 で保存という指定になります。フォルダに入れる必要が無い場合は、
Filename:=ThisWorkbook.Path & ファイル名のように、フォルダ名を省いてください。 ThisWorkbookは、マクロが記録してあるブックのことを指します。
データを分割してCSVで保存マクロ3
コードを最初から順に見てみましょう。
Const コピー行 =  には、分割したい行数を入れます。例では100です。 Set 元シート = ActiveSheet 変数の元シートをActiveSheetにセットします。
Sub データを分割してCSVで保存()
    Dim 元シート As Worksheet, Wb As Workbook, ファイル名 As String
    Dim 総行数 As Long, 回数 As Long, i As Long, 開始行 As Long
    Const コピー行 = 100
    Set 元シート = ActiveSheet 
    総行数 = 元シート.UsedRange.Rows.Count - 1
    回数 = Int(総行数 / コピー行) + IIf(総行数 Mod コピー行 > 0, 1, 0)
    開始行 = 2
変数 Wb は、コピーしたデータを貼り付けるために作成した新規ブックとなります。 ファイル名はCSVファイルとして保存するときに使うファイル名のことで、最後に"まで.CSV"と拡張子をつけています。
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    For i = 1 To 回数
        Set Wb = Workbooks.Add
        ファイル名 = "データ" & 開始行 - 1 & "~" & 開始行 + コピー行 - 2 & "まで.CSV"
FileFormat:=xlCSV で、ブックをCSVで保存するという指定になります。
        元シート.Rows(1).Copy Wb.Worksheets("Sheet1").Range("A1")
        元シート.Rows(開始行 & ":" & 開始行 + コピー行 - 1).Copy Wb.Worksheets("Sheet1").Range("A2")
        Wb.SaveAs Filename:=ThisWorkbook.Path & "\CSV\" & ファイル名, FileFormat:=xlCSV, CreateBackup:=False
        Wb.Close
        Set Wb = Nothing
        開始行 = 開始行 + コピー行
    Next i
        Application.ScreenUpdating = True
        Application.DisplayAlerts = True
End Sub
スポンサーリンク

元になる分割したいデータシートを開き、マクロを実行すると、次の様になります。 あらかじめ作成しておいたCSVというフォルダに、マクロで作成されたCSVファイルが保存されています。
データを分割してCSVで保存マクロ4
CSVファイルをメモ帳で開いたところです。
データを分割してCSVで保存マクロ5
CSVファイルを作成する方法は、他にもあるので、追って紹介していきます。お疲れ様でした。
スポンサーリンク
おすすめコンテンツ