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


Wb.SaveAs Filename:=ThisWorkbook.Path & "\CSV\" & ファイル名, FileFormat:=xlCSV, CreateBackup:=FalseそしてCSVファイルを保存する場所なんですが、場所の指定も、FileNameに入れてしまうわけです。 Filename:=ThisWorkbook.Path & "\CSV\" & ファイル名

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
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

