社保のCSVファイルは、列数の異なるデータをひとつのファイルにまとめてあるため、
列数が少ない行には、不要なカンマが入ってしまう事が原因でした。
すべて、配列で読み込むとEXCELは止まってしまうため、
大物の個人データの範囲だけCSVで出力した後に、
データ量が少ない所属データを、先頭に書き込んで上書きすればエラーの出ないファイルができます。
電子申請したい方がいたら、ファイル名だけ変更すればそのまま使えるはずなので、コードをアップしておきます。
Sub kansei()
Dim fn As String, txt As String
Dim strName() As String
ReDim strName(1)
'配列に値を入れる
dat = ""
With Sheets("sheet1")
For i = 1 To 6
dat = dat & .Cells(1, i) & ","
Next
dat = Left(dat, Len(dat) - 1) '最後のカンマを取り除く
strName(0) = dat
dat = ""
For i = 1 To 11
dat = dat & .Cells(4, i) & ","
Next
dat = Left(dat, Len(dat) - 1) '最終のカンマを取り除く
strName(1) = dat
End With
fn = "C:\Users\tasuk\Desktop\A社保申告\SHFD0006temp - コピー.CSV"
txt = CreateObject("Scripting.FileSystemObject").OpenTextFile(fn).ReadAll
'Debug.Print strName(0) & vbCrLf & "[kanri]" & vbCrLf & ",001" & vbCrLf & strName(1)
txt = strName(0) & vbCrLf & "[kanri]" & vbCrLf & ",001" & vbCrLf & strName(1) & vbCrLf & txt
Open fn For Output As #1
Print #1, txt
Close #1
End Sub