EXCEL超初心者マクロ(11)
CSVファイル分割(条件あり)
CSVファイルが大量にあり、処理の関係で分割してほしいという要望があり、急遽作成。
ちょっと雑に作ってるので勘弁してください。いつもですけどね。
条件
KANRIシートのB1に取り込むCSVのフォルダを入れてください。
CSVに改行等が入っていいない。
CSVは文字列で取り込む(分割のみが目的な為)
件数と、作成ファイル数を指定出来ます。
簡易版として作ったので、出力の際一件ずつ保存ダイアログで止まります。
Dim OUTFILE Dim rechead Dim recout mySheetName001 = "INCSV" ' ***処理確認*** MSG_FLG = MsgBox(mySheetName001 & " 分割出力実行OK", vbYesNo) If MSG_FLG = vbNo Then Exit Sub End If ' 相手開く CNT01 = 1 OUTFILE = Application.GetSaveAsFilename(Worksheets("KANRI").Range("B1") & "\" & _ mySheetName001 & CStr(Format(Date, "yyyymmdd")) & "_" & CNT01 & ".csv", "カンマ区切り形式 (*.csv), *.csv") IntFlNo = FreeFile Open OUTFILE For Output As #IntFlNo '### HEAD 作成 Set set_data01 = Worksheets(mySheetName001).Range("A1") rechead = set_data01.Offset(0, 0).value & "," & _ set_data01.Offset(0, 1).value & "," & _ set_data01.Offset(0, 2).value & "," & _ set_data01.Offset(0, 3).value '## rechead = "HEAD1,HEAD2,HEAD3,HEAD4" Print #IntFlNo, rechead CNT03 = 0 ' Application.StatusBar = "処理実行中....(CSV作成中)" Set set_data01 = Worksheets(mySheetName001).Range("A2") Do Until set_data01.Offset(0, 0).value = "" '明細処理 recout = set_data01.Offset(0, 0).value & "," & _ set_data01.Offset(0, 1).value & "," & _ set_data01.Offset(0, 2).value & "," & _ set_data01.Offset(0, 3).value Print #IntFlNo, recout CNT03 = CNT03 + 1 If CNT03 >= MAXDATA.Text Then CNT01 = CNT01 + 1 If CNT01 > MAXFILE.Text Then Exit Do End If Close #IntFlNo CNT03 = 0 OUTFILE = Application.GetSaveAsFilename(Worksheets("KANRI").Range("B1") & "\" & _ mySheetName001 & CStr(Format(Date, "yyyymmdd")) & "_" & CNT01 & ".csv", "カンマ区切り形式 (*.csv), *.csv") IntFlNo = FreeFile Open OUTFILE For Output As #IntFlNo '## rechead = "HEAD1,HEAD2,HEAD3,HEAD4" Print #IntFlNo, rechead End If '***次行 Set set_data01 = set_data01.Offset(1, 0) Loop '=================================================================================== Close #IntFlNo Application.StatusBar = OUTFILE & " 作成終了" MsgBox ("処理終了") '###END
Discussion
New Comments
No comments yet. Be the first one!