ツール

算定基礎届の転記VBA

算定基礎届の転記VBA

組合健保など、エクセルに値を転記しなければならないときに使えるVBAコードです。

組合健保は算定基礎届で独自のエクセル様式用いているとこが多いです。
給与計算システムから算定のCSVを吐き出し、それを整えたあとに使えるVBAコードです。
ブック名や列アルファベットを適時入れ替えると使えるかなと思います。

Sub sample()

LastRow = Cells(Rows.Count, 1).End(xlUp).Row

'i = 届1枚に記載できる人数
i = 5

'n = 全体のループ回数(届枚数と同じ)
n = (LastRow \ i) + 1

    For j = 1 To n
        For m = 1 To i 'm = 届出1枚の人数分だけ繰り返す
            k = m + (i * (j - 1))  'k = 何人目(何行目)の情報か
            
            atama = (m - 1) * 21 + 86 '転記先のセル行
            shigatsu = (m - 1) * 21 + 92 '転記先のセル行その2
            gogatsu = (m - 1) * 21 + 97 '転記先のセル行その3
            rokugatsu = (m - 1) * 21 + 102 '転記先のセル行その4
                
            '整理番号
            Workbooks("転記先ブック名").Worksheets(j).Range("D" & atama).Value = Workbooks("転記元ブック名").Worksheets(1).Range("A" & 1 + k).Text
            '氏名
            Workbooks("転記先ブック名").Worksheets(j).Range("M" & atama).Value = Workbooks("転記元ブック名").Worksheets(1).Range("B" & 1 + k).Text
            '元号
            If Workbooks("転記元ブック名").Worksheets(1).Range("C" & 1 + k).Text = "7" Then
                Workbooks("転記先ブック名").Worksheets(j).Range("AE" & atama).Value = "平成"
            Else: Workbooks("転記先ブック名").Worksheets(j).Range("AE" & atama).Value = "昭和"
            End If
            
            '和暦年月日
            Workbooks("転記先ブック名").Worksheets(j).Range("AI" & atama).Value = Workbooks("転記元ブック名").Worksheets(1).Range("D" & 1 + k).Text
            Workbooks("転記先ブック名").Worksheets(j).Range("AP" & atama).Value = Workbooks("転記元ブック名").Worksheets(1).Range("E" & 1 + k).Text
            Workbooks("転記先ブック名").Worksheets(j).Range("BA" & atama).Value = Workbooks("転記元ブック名").Worksheets(1).Range("F" & 1 + k).Text
            '従前健保
            Workbooks("転記先ブック名").Worksheets(j).Range("BC" & atama).Value = Workbooks("転記元ブック名").Worksheets(1).Range("G" & 1 + k).Text
            '従前厚年
            Workbooks("転記先ブック名").Worksheets(j).Range("BK" & atama).Value = Workbooks("転記元ブック名").Worksheets(1).Range("H" & 1 + k).Text
            
            '4月の日数
            Workbooks("転記先ブック名").Worksheets(j).Range("H" & shigatsu).Value = Workbooks("転記元ブック名").Worksheets(1).Range("I" & 1 + k).Text
            '4月の金額
            Workbooks("転記先ブック名").Worksheets(j).Range("M" & shigatsu).Value = Workbooks("転記元ブック名").Worksheets(1).Range("L" & 1 + k).Text
            '総計
            Workbooks("転記先ブック名").Worksheets(j).Range("BC" & shigatsu).Value = Workbooks("転記元ブック名").Worksheets(1).Range("O" & 1 + k).Text
            
            '5月の日数
            Workbooks("転記先ブック名").Worksheets(j).Range("H" & gogatsu).Value = Workbooks("転記元ブック名").Worksheets(1).Range("J" & 1 + k).Text
            '5月の金額
            Workbooks("転記先ブック名").Worksheets(j).Range("M" & gogatsu).Value = Workbooks("転記元ブック名").Worksheets(1).Range("M" & 1 + k).Text
            '平均
            Workbooks("転記先ブック名").Worksheets(j).Range("BC" & gogatsu).Value = Workbooks("転記元ブック名").Worksheets(1).Range("P" & 1 + k).Text
            
            '6月の日数
            Workbooks("転記先ブック名").Worksheets(j).Range("H" & rokugatsu).Value = Workbooks("転記元ブック名").Worksheets(1).Range("K" & 1 + k).Text
            '6月の金額
            Workbooks("転記先ブック名").Worksheets(j).Range("M" & rokugatsu).Value = Workbooks("転記元ブック名").Worksheets(1).Range("N" & 1 + k).Text
            
        Next m '次の人の転記
    Next j '次のページへ

End Sub

予め、転記先のブックについて必要な届出枚数分シートをコピーしておく必要があります。転記先のシートは左に寄せておいてください。シートコピーのVBAは下記の通り。

Sub sh_copy()
 
 For i = 1 To 7 '必要な枚数の数字に変えてください
    Worksheets(1).Copy Before:=Worksheets(1)
 Next i
 
End Sub

あとはXでもちょいちょい紹介している和暦年月日を分解する関数
例えば昭和60年6月10日生まれの方だと600610だったり
平成8年12月11日生まれの方だと81211とでたりするのを和暦年月日に分ける関数です。

  • 和暦年
=LEFT(分解元セル,IF(LEN(分解元セル)=6,2,1))
=MID(RIGHT(分解元セル,4),1,2)
=RIGHT(分解元セル,2)

猛暑が続きますが……すっきりとした気持ちで7月10日を超えたいですね

お役立ち情報をお届けします!

月1回・17日前後、労務・経営に関する情報をメール配信いたします。メールはドメイン「@ro-mutech.com」より送られます。ぜひ下記フォームよりご登録ください。