当たり前のことですが、会計・税務ソフトは仕様が決まっています。
UI がもっと見やすくならないかな? と思うこともありますが、自分で作るものではどうしようもありません。
与えられたものを使う他ありません。
会計・税務ソフトのここはどうなのかなぁ? と思う点を補うために Excel が使えます。
会計・税務ソフトのデータを CSV出力して、それを Excel ファイルに取り込むというやり方です。
そして、Excel ファイル上でいじったデータを CSV出力して会計・税務ソフトに戻すこともできます。
さて、今日は、JDL の年末調整システムから出力した CSVデータを Excel に取り込んだ後に、データの加工するマクロ(Excel VBA)を紹介します。
1、JDL 年末調整システムとExcel でデータを行き来する仕組み
まずは使っている仕組みの全体像をざっくりお話しします。
私がいる事務所では、顧問先の年末調整の計算でのために JDL 年末調整システムを使っています。
そして、7月と1月の源泉所得税の納期特例の時期に、顧問先の月々の給与の合計額を計算して納付書を作成しています(1月は年末調整の対応)。
さて、月々の給与は Excel の表にしてプリントアウトして保管しています。
(紙で保管する必要があるかどうかという議論がありますが、まぁここは昔からのやり方で現状はそのようにしているということです。)
年末調整システムと Excel シートの両方に給料等の同じ入力を2回行うのは面倒です。
ですので、給料等のデータ入力はどちらか一方だけで行って、無理やりデータを連動しています。
マクロ(Excel VBA と UWSC)を使って、そのような仕組みを作っています。
UWSCというのは RPA のように画面操作をすることができるツールです。
どのような仕組みか動画を作ってお話ししましたのでどうぞ!
Excel シート内でのデータの加工は VBA で行い
年末調整システムでの CSV データの入出力の操作は UWSC を使っています。
2、CSVデータを Excel に取り込んだ後に、データの並び替えをするマクロ(Excel VBA)
さて、今日のメインに行きますね!
上記のような仕組みを使っているわけですが、今日詳しくお話しするのは、その中の一部です。
年末調整システムから CSV 出力したデータは、Excel の「JDLからの読み込み」シートに取り込みます。
そして、この Excel ファイルに取り込んだデータを加工して
●「1〜6月_給料」シート
●「7〜12月_給料」シート
に出力します。
こんな感じになります ↓
年末調整システムから出力したままのデータでは、こちらが見やすい状態にはなっていないので加工して、他のシートに移す必要があるんです。
今日は、この取り込んだデータを加工して並び替える VBAコードを紹介します。
全 VBA コード
全 VBA コードは以下のようになります。ちょい長めです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 |
Sub CSV_Salary_Import() Application.ScreenUpdating = False Dim ASheet_Name As String 'アクティブなシートの名前' Dim Sheet_Name As String 'シート名' Dim Num(1 To 10) As Long '従業員No' Dim Sei(1 To 10) As String '従業員の姓' Dim Mei(1 To 10) As String '従業員の名' '1月分' Dim Hi_1 '1月の支給日' Dim Kyuyo_1(1 To 10) As Long '1月の総支給額' Dim Syaho_1(1 To 10) As Long '1月の社会保険料' Dim Gensen_1(1 To 10) As Long '1月の源泉所得税' '2月分' Dim Hi_2 '2月の支給日' Dim Kyuyo_2(1 To 10) As Long '2月の総支給額' Dim Syaho_2(1 To 10) As Long '2月の社会保険料' Dim Gensen_2(1 To 10) As Long '2月の源泉所得税' '3月分' Dim Hi_3 '3月の支給日' Dim Kyuyo_3(1 To 10) As Long '3月の総支給額' Dim Syaho_3(1 To 10) As Long '3月の社会保険料' Dim Gensen_3(1 To 10) As Long '3月の源泉所得税' '4月分' Dim Hi_4 '4月の支給日' Dim Kyuyo_4(1 To 10) As Long '4月の総支給額' Dim Syaho_4(1 To 10) As Long '4月の社会保険料' Dim Gensen_4(1 To 10) As Long '4月の源泉所得税' '5月分' Dim Hi_5 '5月の支給日' Dim Kyuyo_5(1 To 10) As Long '5月の総支給額' Dim Syaho_5(1 To 10) As Long '5月の社会保険料' Dim Gensen_5(1 To 10) As Long '5月の源泉所得税' '6月分' Dim Hi_6 '6月の支給日' Dim Kyuyo_6(1 To 10) As Long '6月の総支給額' Dim Syaho_6(1 To 10) As Long '6月の社会保険料' Dim Gensen_6(1 To 10) As Long '6月の源泉所得税' '7月分' Dim Hi_7 '7月の支給日' Dim Kyuyo_7(1 To 10) As Long '7月の総支給額' Dim Syaho_7(1 To 10) As Long '7月の社会保険料' Dim Gensen_7(1 To 10) As Long '7月の源泉所得税' '8月分' Dim Hi_8 '8月の支給日' Dim Kyuyo_8(1 To 10) As Long '8月の総支給額' Dim Syaho_8(1 To 10) As Long '8月の社会保険料' Dim Gensen_8(1 To 10) As Long '8月の源泉所得税' '9月分' Dim Hi_9 '9月の支給日' Dim Kyuyo_9(1 To 10) As Long '9月の総支給額' Dim Syaho_9(1 To 10) As Long '9月の社会保険料' Dim Gensen_9(1 To 10) As Long '9月の源泉所得税' '10月分' Dim Hi_10 '10月の支給日' Dim Kyuyo_10(1 To 10) As Long '10月の総支給額' Dim Syaho_10(1 To 10) As Long '10月の社会保険料' Dim Gensen_10(1 To 10) As Long '10月の源泉所得税' '11月分' Dim Hi_11 '11月の支給日' Dim Kyuyo_11(1 To 10) As Long '11月の総支給額' Dim Syaho_11(1 To 10) As Long '11月の社会保険料' Dim Gensen_11(1 To 10) As Long '11月の源泉所得税' '12月分' Dim Hi_12 '12月の支給日' Dim Kyuyo_12(1 To 10) As Long '12月の総支給額' Dim Syaho_12(1 To 10) As Long '12月の社会保険料' Dim Gensen_12(1 To 10) As Long '12月の源泉所得税' '賞与1回目' Dim Tsuki_S1 '賞与1回目の支給月' Dim Hi_S1 '賞与1回目の支給日' Dim Kyuyo_S1(1 To 10) As Long '賞与1回目の総支給額' Dim Syaho_S1(1 To 10) As Long '賞与1回目の社会保険料' Dim Gensen_S1(1 To 10) As Long '賞与1回目の源泉所得税' '賞与2回目' Dim Tsuki_S2 '賞与2回目の支給月' Dim Hi_S2 '賞与2回目の支給日' Dim Kyuyo_S2(1 To 10) As Long '賞与2回目の総支給額' Dim Syaho_S2(1 To 10) As Long '賞与2回目の社会保険料' Dim Gensen_S2(1 To 10) As Long '賞与2回目の源泉所得税' '賞与3回目' Dim Tsuki_S3 '賞与3回目の支給月' Dim Hi_S3 '賞与3回目の支給日' Dim Kyuyo_S3(1 To 10) As Long '賞与3回目の総支給額' Dim Syaho_S3(1 To 10) As Long '賞与3回目の社会保険料' Dim Gensen_S3(1 To 10) As Long '賞与3回目の源泉所得税' '賞与4回目' Dim Tsuki_S4 '賞与4回目の支給月' Dim Hi_S4 '賞与4回目の支給日' Dim Kyuyo_S4(1 To 10) As Long '賞与4回目の総支給額' Dim Syaho_S4(1 To 10) As Long '賞与4回目の社会保険料' Dim Gensen_S4(1 To 10) As Long '賞与4回目の源泉所得税' '前職' Dim Kyuyo_Zen(1 To 10) As Long '前職の総支給額' Dim Syaho_Zen(1 To 10) As Long '前職の社会保険料' Dim Gensen_Zen(1 To 10) As Long '前職の源泉所得税' '従業員情報クリア-----------------------------------------' '1~6月--------------------------------------------------' '従業員No、名前をクリア' Worksheets("1~6月_給料").Range("Q26:R26").ClearContents Worksheets("1~6月_給料").Range("Q31:R31").ClearContents Worksheets("1~6月_給料").Range("Q36:R36").ClearContents Worksheets("1~6月_給料").Range("Q41:R41").ClearContents Worksheets("1~6月_給料").Range("Q46:R46").ClearContents Worksheets("1~6月_給料").Range("Q51:R51").ClearContents Worksheets("1~6月_給料").Range("Q56:R56").ClearContents Worksheets("1~6月_給料").Range("Q61:R61").ClearContents Worksheets("1~6月_給料").Range("Q66:R66").ClearContents Worksheets("1~6月_給料").Range("Q71:R71").ClearContents '給与の日付をクリア' Worksheets("1~6月_給料").Range("S24:X24").ClearContents '通常月の給料、社会保険料、源泉所得税をクリア' Worksheets("1~6月_給料").Range("S26:X29").ClearContents Worksheets("1~6月_給料").Range("S31:X34").ClearContents Worksheets("1~6月_給料").Range("S36:X39").ClearContents Worksheets("1~6月_給料").Range("S41:X44").ClearContents Worksheets("1~6月_給料").Range("S46:X49").ClearContents Worksheets("1~6月_給料").Range("S51:X54").ClearContents Worksheets("1~6月_給料").Range("S56:X59").ClearContents Worksheets("1~6月_給料").Range("S61:X64").ClearContents Worksheets("1~6月_給料").Range("S66:X69").ClearContents Worksheets("1~6月_給料").Range("S71:X74").ClearContents '前職の給料、社会保険料、源泉所得税をクリア' Worksheets("1~6月_給料").Range("Z26:Z29").ClearContents Worksheets("1~6月_給料").Range("Z31:Z34").ClearContents Worksheets("1~6月_給料").Range("Z36:Z39").ClearContents Worksheets("1~6月_給料").Range("Z41:Z44").ClearContents Worksheets("1~6月_給料").Range("Z46:Z49").ClearContents Worksheets("1~6月_給料").Range("Z51:Z54").ClearContents Worksheets("1~6月_給料").Range("Z56:Z59").ClearContents Worksheets("1~6月_給料").Range("Z61:Z64").ClearContents Worksheets("1~6月_給料").Range("Z66:Z69").ClearContents Worksheets("1~6月_給料").Range("Z71:Z74").ClearContents '7~12月--------------------------------------------------' '従業員名欄をクリア' Worksheets("7~12月_給料").Range("Q26:R26").ClearContents Worksheets("7~12月_給料").Range("Q31:R31").ClearContents Worksheets("7~12月_給料").Range("Q36:R36").ClearContents Worksheets("7~12月_給料").Range("Q41:R41").ClearContents Worksheets("7~12月_給料").Range("Q46:R46").ClearContents Worksheets("7~12月_給料").Range("Q51:R51").ClearContents Worksheets("7~12月_給料").Range("Q56:R56").ClearContents Worksheets("7~12月_給料").Range("Q61:R61").ClearContents Worksheets("7~12月_給料").Range("Q66:R66").ClearContents Worksheets("7~12月_給料").Range("Q71:R71").ClearContents '給与の日付をクリア' Worksheets("7~12月_給料").Range("S24:X24").ClearContents '賞与の日付をクリア' Worksheets("7~12月_給料").Range("AA23:AD24").ClearContents '通常月の給料、社会保険料、源泉所得税をクリア' Worksheets("7~12月_給料").Range("S26:X29").ClearContents Worksheets("7~12月_給料").Range("S31:X34").ClearContents Worksheets("7~12月_給料").Range("S36:X39").ClearContents Worksheets("7~12月_給料").Range("S41:X44").ClearContents Worksheets("7~12月_給料").Range("S46:X49").ClearContents Worksheets("7~12月_給料").Range("S51:X54").ClearContents Worksheets("7~12月_給料").Range("S56:X59").ClearContents Worksheets("7~12月_給料").Range("S61:X64").ClearContents Worksheets("7~12月_給料").Range("S66:X69").ClearContents Worksheets("7~12月_給料").Range("S71:X74").ClearContents '賞与の給料、社会保険料、源泉所得税をクリア' Worksheets("7~12月_給料").Range("AA26:AD29").ClearContents Worksheets("7~12月_給料").Range("AA31:AD34").ClearContents Worksheets("7~12月_給料").Range("AA36:AD39").ClearContents Worksheets("7~12月_給料").Range("AA41:AD44").ClearContents Worksheets("7~12月_給料").Range("AA46:AD49").ClearContents Worksheets("7~12月_給料").Range("AA51:AD54").ClearContents Worksheets("7~12月_給料").Range("AA56:AD59").ClearContents Worksheets("7~12月_給料").Range("AA61:AD64").ClearContents Worksheets("7~12月_給料").Range("AA66:AD69").ClearContents Worksheets("7~12月_給料").Range("AA71:AD74").ClearContents '--------------------------------------------------' 'データ再読込ボタンがどこから呼び出されたか明らかにするためアクティブなシート名を取得' ASheet_Name = ActiveSheet.Name Dim Start_Gyou 'データがはじまる行番号' Start_Gyou = 6 Dim Data_Num '従業員数' Data_Num = 0 '初期値' '1月分 支給日、総支給額、社会保険料、源泉所得税 の列番号' Dim HiL_1: Dim KyuyoL_1: Dim SyahoL_1: Dim GensenL_1 '2月分' Dim HiL_2: Dim KyuyoL_2: Dim SyahoL_2: Dim GensenL_2 '3月分' Dim HiL_3: Dim KyuyoL_3: Dim SyahoL_3: Dim GensenL_3 '4月分' Dim HiL_4: Dim KyuyoL_4: Dim SyahoL_4: Dim GensenL_4 '5月分' Dim HiL_5: Dim KyuyoL_5: Dim SyahoL_5: Dim GensenL_5 '6月分' Dim HiL_6: Dim KyuyoL_6: Dim SyahoL_6: Dim GensenL_6 '7月分' Dim HiL_7: Dim KyuyoL_7: Dim SyahoL_7: Dim GensenL_7 '8月分' Dim HiL_8: Dim KyuyoL_8: Dim SyahoL_8: Dim GensenL_8 '9月分' Dim HiL_9: Dim KyuyoL_9: Dim SyahoL_9: Dim GensenL_9 '10月分' Dim HiL_10: Dim KyuyoL_10: Dim SyahoL_10: Dim GensenL_10 '11月分' Dim HiL_11: Dim KyuyoL_11: Dim SyahoL_11: Dim GensenL_11 '12月分' Dim HiL_12: Dim KyuyoL_12: Dim SyahoL_12: Dim GensenL_12 '賞与1回目' Dim HiL_S1: Dim KyuyoL_S1: Dim SyahoL_S1: Dim GensenL_S1 '賞与2回目' Dim HiL_S2: Dim KyuyoL_S2: Dim SyahoL_S2: Dim GensenL_S2 '賞与3回目' Dim HiL_S3: Dim KyuyoL_S3: Dim SyahoL_S3: Dim GensenL_S3 '賞与4回目' Dim HiL_S4: Dim KyuyoL_S4: Dim SyahoL_S4: Dim GensenL_S4 '前職' Dim KyuyoL_Zen: Dim SyahoL_Zen: Dim GensenL_Zen '出力時の列番号' Dim Column_Num: Dim Column_SeiMei Dim Column_1: Dim Column_2: Dim Column_3: Dim Column_4: Dim Column_5: Dim Column_6 '1~6月' Dim Column_Zen '前職' Dim Column_7: Dim Column_8: Dim Column_9: Dim Column_10: Dim Column_11: Dim Column_12 '7~12月' Dim Column_S1: Dim Column_S2: Dim Column_S3: Dim Column_S4 '賞与1~4月' Sheet_Name = ActiveSheet.Name Worksheets("JDLからの読み込み").Activate '各項目の列番号の取得' For i = 1 To 500 Select Case Cells(Start_Gyou - 1, i).Value '給与' Case "給料1月 支給年月日": HiL_1 = i Case "給料1月 総支給額": KyuyoL_1 = i Case "給料1月 社会保険": SyahoL_1 = i Case "給料1月 源泉税額": GensenL_1 = i Case "給料2月 支給年月日": HiL_2 = i Case "給料2月 総支給額": KyuyoL_2 = i Case "給料2月 社会保険": SyahoL_2 = i Case "給料2月 源泉税額": GensenL_2 = i Case "給料3月 支給年月日": HiL_3 = i Case "給料3月 総支給額": KyuyoL_3 = i Case "給料3月 社会保険": SyahoL_3 = i Case "給料3月 源泉税額": GensenL_3 = i Case "給料4月 支給年月日": HiL_4 = i Case "給料4月 総支給額": KyuyoL_4 = i Case "給料4月 社会保険": SyahoL_4 = i Case "給料4月 源泉税額": GensenL_4 = i Case "給料5月 支給年月日": HiL_5 = i Case "給料5月 総支給額": KyuyoL_5 = i Case "給料5月 社会保険": SyahoL_5 = i Case "給料5月 源泉税額": GensenL_5 = i Case "給料6月 支給年月日": HiL_6 = i Case "給料6月 総支給額": KyuyoL_6 = i Case "給料6月 社会保険": SyahoL_6 = i Case "給料6月 源泉税額": GensenL_6 = i Case "給料7月 支給年月日": HiL_7 = i Case "給料7月 総支給額": KyuyoL_7 = i Case "給料7月 社会保険": SyahoL_7 = i Case "給料7月 源泉税額": GensenL_7 = i Case "給料8月 支給年月日": HiL_8 = i Case "給料8月 総支給額": KyuyoL_8 = i Case "給料8月 社会保険": SyahoL_8 = i Case "給料8月 源泉税額": GensenL_8 = i Case "給料9月 支給年月日": HiL_9 = i Case "給料9月 総支給額": KyuyoL_9 = i Case "給料9月 社会保険": SyahoL_9 = i Case "給料9月 源泉税額": GensenL_9 = i Case "給料10月 支給年月日": HiL_10 = i Case "給料10月 総支給額": KyuyoL_10 = i Case "給料10月 社会保険": SyahoL_10 = i Case "給料10月 源泉税額": GensenL_10 = i Case "給料11月 支給年月日": HiL_11 = i Case "給料11月 総支給額": KyuyoL_11 = i Case "給料11月 社会保険": SyahoL_11 = i Case "給料11月 源泉税額": GensenL_11 = i Case "給料12月 支給年月日": HiL_12 = i Case "給料12月 総支給額": KyuyoL_12 = i Case "給料12月 社会保険": SyahoL_12 = i Case "給料12月 源泉税額": GensenL_12 = i '賞与' Case "賞与1回 支給年月日": HiL_S1 = i Case "賞与1回 総支給額": KyuyoL_S1 = i Case "賞与1回 社会保険": SyahoL_S1 = i Case "賞与1回 源泉税額": GensenL_S1 = i Case "賞与2回 支給年月日": HiL_S2 = i Case "賞与2回 総支給額": KyuyoL_S2 = i Case "賞与2回 社会保険": SyahoL_S2 = i Case "賞与2回 源泉税額": GensenL_S2 = i Case "賞与3回 支給年月日": HiL_S3 = i Case "賞与3回 総支給額": KyuyoL_S3 = i Case "賞与3回 社会保険": SyahoL_S3 = i Case "賞与3回 源泉税額": GensenL_S3 = i Case "賞与4回 支給年月日": HiL_S4 = i Case "賞与4回 総支給額": KyuyoL_S4 = i Case "賞与4回 社会保険": SyahoL_S4 = i Case "賞与4回 源泉税額": GensenL_S4 = i Case "前職分 総支給額": KyuyoL_Zen = i Case "前職分 社会保険": SyahoL_Zen = i Case "前職分 源泉税額": GensenL_Zen = i Case Else End Select Next i '従業員数のカウント' For i = 1 To 500 If Cells(Start_Gyou + i - 1, 1).Value <> "<総合データ終了>" Then Data_Num = Data_Num + 1 Else Exit For End If Next i '従業員数が10人超えたので対応できません コメント' If Data_Num > 10 Then MsgBox "従業員数が10人を超えているので表示できません。" Exit Sub Else End If '日付データの変換' '1月' If Cells(Start_Gyou - 1 + 1, HiL_1) = "" Then Hi_1 = "" Else Cells(Start_Gyou - 1 + 1, HiL_1).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_1).Value) Hi_1 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_1).Value)) End If '2月' If Cells(Start_Gyou - 1 + 1, HiL_2) = "" Then Hi_2 = "" Else Cells(Start_Gyou - 1 + 1, HiL_2).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_2).Value) Hi_2 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_2).Value)) End If '3月' If Cells(Start_Gyou - 1 + 1, HiL_3) = "" Then Hi_3 = "" Else Cells(Start_Gyou - 1 + 1, HiL_3).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_3).Value) Hi_3 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_3).Value)) End If '4月' If Cells(Start_Gyou - 1 + 1, HiL_4) = "" Then Hi_4 = "" Else Cells(Start_Gyou - 1 + 1, HiL_4).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_4).Value) Hi_4 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_4).Value)) End If '5月' If Cells(Start_Gyou - 1 + 1, HiL_5) = "" Then Hi_5 = "" Else Cells(Start_Gyou - 1 + 1, HiL_5).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_5).Value) Hi_5 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_5).Value)) End If '6月' If Cells(Start_Gyou - 1 + 1, HiL_6) = "" Then Hi_6 = "" Else Cells(Start_Gyou - 1 + 1, HiL_6).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_6).Value) Hi_6 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_6).Value)) End If '7月' If Cells(Start_Gyou - 1 + 1, HiL_7) = "" Then Hi_7 = "" Else Cells(Start_Gyou - 1 + 1, HiL_7).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_7).Value) Hi_7 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_7).Value)) End If '8月' If Cells(Start_Gyou - 1 + 1, HiL_8) = "" Then Hi_8 = "" Else Cells(Start_Gyou - 1 + 1, HiL_8).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_8).Value) Hi_8 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_8).Value)) End If '9月' If Cells(Start_Gyou - 1 + 1, HiL_9) = "" Then Hi_9 = "" Else Cells(Start_Gyou - 1 + 1, HiL_9).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_9).Value) Hi_9 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_9).Value)) End If '10月' If Cells(Start_Gyou - 1 + 1, HiL_10) = "" Then Hi_10 = "" Else Cells(Start_Gyou - 1 + 1, HiL_10).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_10).Value) Hi_10 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_10).Value)) End If '11月' If Cells(Start_Gyou - 1 + 1, HiL_11) = "" Then Hi_11 = "" Else Cells(Start_Gyou - 1 + 1, HiL_11).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_11).Value) Hi_11 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_11).Value)) End If '12月' If Cells(Start_Gyou - 1 + 1, HiL_12) = "" Then Hi_12 = "" Else Cells(Start_Gyou - 1 + 1, HiL_12).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_12).Value) Hi_12 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_12).Value)) End If '賞与1回目 日付' If Cells(Start_Gyou - 1 + 1, HiL_S1) = "" Then Tsuki_S1 = "": Hi_S1 = "" Else Cells(Start_Gyou - 1 + 1, HiL_S1).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_S1).Value) Tsuki_S1 = Month(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_S1).Value)) Hi_S1 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_S1).Value)) End If '賞与2回目 日付' If Cells(Start_Gyou - 1 + 1, HiL_S2) = "" Then Tsuki_S2 = "": Hi_S2 = "" Else Cells(Start_Gyou - 1 + 1, HiL_S2).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_S2).Value) Tsuki_S2 = Month(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_S2).Value)) Hi_S2 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_S2).Value)) End If '賞与3回目 日付' If Cells(Start_Gyou - 1 + 1, HiL_S3) = "" Then Tsuki_S3 = "": Hi_S3 = "" Else Cells(Start_Gyou - 1 + 1, HiL_S3).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_S3).Value) Tsuki_S3 = Month(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_S3).Value)) Hi_S3 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_S3).Value)) End If '賞与4回目 日付' If Cells(Start_Gyou - 1 + 1, HiL_S4) = "" Then Tsuki_S4 = "": Hi_S4 = "" Else Cells(Start_Gyou - 1 + 1, HiL_S4).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_S4).Value) Tsuki_S4 = Month(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_S4).Value)) Hi_S4 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_S4).Value)) End If For i = 1 To Data_Num Num(i) = Cells(Start_Gyou + i - 1, 1).Value Sei(i) = Cells(Start_Gyou + i - 1, 2).Value Mei(i) = Cells(Start_Gyou + i - 1, 3).Value '給与' Cells(Start_Gyou + i - 1 + 1, HiL_1).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_1).Value) '日付データ置き換え' Kyuyo_1(i) = Cells(Start_Gyou + i - 1, KyuyoL_1).Value '1月の総支給額' Syaho_1(i) = Cells(Start_Gyou + i - 1, SyahoL_1).Value '1月の社会保険料' Gensen_1(i) = Cells(Start_Gyou + i - 1, GensenL_1).Value '1月の源泉所得税' Cells(Start_Gyou + i - 1 + 1, HiL_2).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_2).Value) '日付データ置き換え' Kyuyo_2(i) = Cells(Start_Gyou + i - 1, KyuyoL_2).Value '2月の総支給額' Syaho_2(i) = Cells(Start_Gyou + i - 1, SyahoL_2).Value '2月の社会保険料' Gensen_2(i) = Cells(Start_Gyou + i - 1, GensenL_2).Value '2月の源泉所得税' Cells(Start_Gyou + i - 1 + 1, HiL_3).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_3).Value) '日付データ置き換え' Kyuyo_3(i) = Cells(Start_Gyou + i - 1, KyuyoL_3).Value '3月の総支給額' Syaho_3(i) = Cells(Start_Gyou + i - 1, SyahoL_3).Value '3月の社会保険料' Gensen_3(i) = Cells(Start_Gyou + i - 1, GensenL_3).Value '3月の源泉所得税' Cells(Start_Gyou + i - 1 + 1, HiL_4).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_4).Value) '日付データ置き換え' Kyuyo_4(i) = Cells(Start_Gyou + i - 1, KyuyoL_4).Value '4月の総支給額' Syaho_4(i) = Cells(Start_Gyou + i - 1, SyahoL_4).Value '4月の社会保険料' Gensen_4(i) = Cells(Start_Gyou + i - 1, GensenL_4).Value '4月の源泉所得税' Cells(Start_Gyou + i - 1 + 1, HiL_5).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_5).Value) '日付データ置き換え' Kyuyo_5(i) = Cells(Start_Gyou + i - 1, KyuyoL_5).Value '5月の総支給額' Syaho_5(i) = Cells(Start_Gyou + i - 1, SyahoL_5).Value '5月の社会保険料' Gensen_5(i) = Cells(Start_Gyou + i - 1, GensenL_5).Value '5月の源泉所得税' Cells(Start_Gyou + i - 1 + 1, HiL_6).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_6).Value) '日付データ置き換え' Kyuyo_6(i) = Cells(Start_Gyou + i - 1, KyuyoL_6).Value '6月の総支給額' Syaho_6(i) = Cells(Start_Gyou + i - 1, SyahoL_6).Value '6月の社会保険料' Gensen_6(i) = Cells(Start_Gyou + i - 1, GensenL_6).Value '6月の源泉所得税' Cells(Start_Gyou + i - 1 + 1, HiL_7).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_7).Value) '日付データ置き換え' Kyuyo_7(i) = Cells(Start_Gyou + i - 1, KyuyoL_7).Value '7月の総支給額' Syaho_7(i) = Cells(Start_Gyou + i - 1, SyahoL_7).Value '7月の社会保険料' Gensen_7(i) = Cells(Start_Gyou + i - 1, GensenL_7).Value '7月の源泉所得税' Cells(Start_Gyou + i - 1 + 1, HiL_8).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_8).Value) '日付データ置き換え' Kyuyo_8(i) = Cells(Start_Gyou + i - 1, KyuyoL_8).Value '8月の総支給額' Syaho_8(i) = Cells(Start_Gyou + i - 1, SyahoL_8).Value '8月の社会保険料' Gensen_8(i) = Cells(Start_Gyou + i - 1, GensenL_8).Value '8月の源泉所得税' Cells(Start_Gyou + i - 1 + 1, HiL_9).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_9).Value) '日付データ置き換え' Kyuyo_9(i) = Cells(Start_Gyou + i - 1, KyuyoL_9).Value '9月の総支給額' Syaho_9(i) = Cells(Start_Gyou + i - 1, SyahoL_9).Value '9月の社会保険料' Gensen_9(i) = Cells(Start_Gyou + i - 1, GensenL_9).Value '9月の源泉所得税' Cells(Start_Gyou + i - 1 + 1, HiL_10).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_10).Value) '日付データ置き換え' Kyuyo_10(i) = Cells(Start_Gyou + i - 1, KyuyoL_10).Value '10月の総支給額' Syaho_10(i) = Cells(Start_Gyou + i - 1, SyahoL_10).Value '10月の社会保険料' Gensen_10(i) = Cells(Start_Gyou + i - 1, GensenL_10).Value '10月の源泉所得税' Cells(Start_Gyou + i - 1 + 1, HiL_11).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_11).Value) '日付データ置き換え' Kyuyo_11(i) = Cells(Start_Gyou + i - 1, KyuyoL_11).Value '11月の総支給額' Syaho_11(i) = Cells(Start_Gyou + i - 1, SyahoL_11).Value '11月の社会保険料' Gensen_11(i) = Cells(Start_Gyou + i - 1, GensenL_11).Value '11月の源泉所得税' Cells(Start_Gyou + i - 1 + 1, HiL_12).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_12).Value) '日付データ置き換え' Kyuyo_12(i) = Cells(Start_Gyou + i - 1, KyuyoL_12).Value '12月の総支給額' Syaho_12(i) = Cells(Start_Gyou + i - 1, SyahoL_12).Value '12月の社会保険料' Gensen_12(i) = Cells(Start_Gyou + i - 1, GensenL_12).Value '12月の源泉所得税' '賞与' Cells(Start_Gyou + i - 1 + 1, HiL_S1).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_S1).Value) '日付データ置き換え' Kyuyo_S1(i) = Cells(Start_Gyou + i - 1, KyuyoL_S1).Value '賞与1回目の総支給額' Syaho_S1(i) = Cells(Start_Gyou + i - 1, SyahoL_S1).Value '賞与1回目の社会保険料' Gensen_S1(i) = Cells(Start_Gyou + i - 1, GensenL_S1).Value '賞与1回目の源泉所得税' Cells(Start_Gyou + i - 1 + 1, HiL_S2).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_S2).Value) '日付データ置き換え' Kyuyo_S2(i) = Cells(Start_Gyou + i - 1, KyuyoL_S2).Value '賞与2回目の総支給額' Syaho_S2(i) = Cells(Start_Gyou + i - 1, SyahoL_S2).Value '賞与2回目の社会保険料' Gensen_S2(i) = Cells(Start_Gyou + i - 1, GensenL_S2).Value '賞与2回目の源泉所得税' Cells(Start_Gyou + i - 1 + 1, HiL_S3).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_S3).Value) '日付データ置き換え' Kyuyo_S3(i) = Cells(Start_Gyou + i - 1, KyuyoL_S3).Value '賞与3回目の総支給額' Syaho_S3(i) = Cells(Start_Gyou + i - 1, SyahoL_S3).Value '賞与3回目の社会保険料' Gensen_S3(i) = Cells(Start_Gyou + i - 1, GensenL_S3).Value '賞与3回目の源泉所得税' Cells(Start_Gyou + i - 1 + 1, HiL_S4).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_S4).Value) '日付データ置き換え' Kyuyo_S4(i) = Cells(Start_Gyou + i - 1, KyuyoL_S4).Value '賞与4回目の総支給額' Syaho_S4(i) = Cells(Start_Gyou + i - 1, SyahoL_S4).Value '賞与4回目の社会保険料' Gensen_S4(i) = Cells(Start_Gyou + i - 1, GensenL_S4).Value '賞与4回目の源泉所得税' '前職' Kyuyo_Zen(i) = Cells(Start_Gyou + i - 1, KyuyoL_Zen).Value '前職の総支給額' Syaho_Zen(i) = Cells(Start_Gyou + i - 1, SyahoL_Zen).Value '前職の社会保険料' Gensen_Zen(i) = Cells(Start_Gyou + i - 1, GensenL_Zen).Value '前職の源泉所得税' Next i 'JDL 年調システムのデータをシートに出力する' Column_Num = 17 '従業員Noの列番号' Column_SeiMei = 18 '名前の列番号' Column_1 = 19 '1月の列番号' Column_2 = 20 '2月の列番号' Column_3 = 21 '3月の列番号' Column_4 = 22 '4月の列番号' Column_5 = 23 '5月の列番号' Column_6 = 24 '6月の列番号' Column_Zen = 26 '賞与4回目の列番号' Column_7 = 19 '7月の列番号' Column_8 = 20 '8月の列番号' Column_9 = 21 '9月の列番号' Column_10 = 22 '10月の列番号' Column_11 = 23 '11月の列番号' Column_12 = 24 '12月の列番号' Column_S1 = 27 '賞与1回目の列番号' Column_S2 = 28 '賞与2回目の列番号' Column_S3 = 29 '賞与3回目の列番号' Column_S4 = 30 '賞与4回目の列番号' '7~12月分のシート上で「データ再読込」する場合' If ASheet_Name = "7~12月_給料" Then GoTo Label1 Else End If Worksheets("1~6月_給料").Activate Cells(24, Column_1).Value = Hi_1 '1月の給与支給日' Cells(24, Column_2).Value = Hi_2 '2月の給与支給日' Cells(24, Column_3).Value = Hi_3 '3月の給与支給日' Cells(24, Column_4).Value = Hi_4 '4月の給与支給日' Cells(24, Column_5).Value = Hi_5 '5月の給与支給日' Cells(24, Column_6).Value = Hi_6 '6月の給与支給日' Cells(24, Column_Zen).Value = Hi_Zen '前職の給与支給日' For i = 1 To Data_Num '従業員 Data_Num 人分' '従業員No、名前' Cells(5 * i + 21, Column_Num).Value = Num(i) '従業員No' Cells(5 * i + 21, Column_SeiMei).Value = Replace(Replace(Sei(i) & Mei(i), " ", ""), " ", "") '名前' '1月分' Cells(5 * i + 21, Column_1).Value = Kyuyo_1(i) '総支給額' Cells(5 * i + 23, Column_1).Value = Syaho_1(i) '社会保険料' Cells(5 * i + 24, Column_1).Value = Gensen_1(i) '源泉所得税' '2月分' Cells(5 * i + 21, Column_2).Value = Kyuyo_2(i) '総支給額' Cells(5 * i + 23, Column_2).Value = Syaho_2(i) '社会保険料' Cells(5 * i + 24, Column_2).Value = Gensen_2(i) '源泉所得税' '3月分' Cells(5 * i + 21, Column_3).Value = Kyuyo_3(i) '総支給額' Cells(5 * i + 23, Column_3).Value = Syaho_3(i) '社会保険料' Cells(5 * i + 24, Column_3).Value = Gensen_3(i) '源泉所得税' '4月分' Cells(5 * i + 21, Column_4).Value = Kyuyo_4(i) '総支給額' Cells(5 * i + 23, Column_4).Value = Syaho_4(i) '社会保険料' Cells(5 * i + 24, Column_4).Value = Gensen_4(i) '源泉所得税' '5月分' Cells(5 * i + 21, Column_5).Value = Kyuyo_5(i) '総支給額' Cells(5 * i + 23, Column_5).Value = Syaho_5(i) '社会保険料' Cells(5 * i + 24, Column_5).Value = Gensen_5(i) '源泉所得税' '6月分' Cells(5 * i + 21, Column_6).Value = Kyuyo_6(i) '総支給額' Cells(5 * i + 23, Column_6).Value = Syaho_6(i) '社会保険料' Cells(5 * i + 24, Column_6).Value = Gensen_6(i) '源泉所得税' '前職' Cells(5 * i + 21, Column_Zen).Value = Kyuyo_Zen(i) '総支給額' Cells(5 * i + 23, Column_Zen).Value = Syaho_Zen(i) '社会保険料' Cells(5 * i + 24, Column_Zen).Value = Gensen_Zen(i) '源泉所得税' Next i Label1: '1~6月分のシート上で「データ再読込」する場合' If ASheet_Name = "1~6月_給料" Then GoTo Label2 Else End If Worksheets("7~12月_給料").Activate Cells(24, Column_7).Value = Hi_7 '7月の給与支給日' Cells(24, Column_8).Value = Hi_8 '8月の給与支給日' Cells(24, Column_9).Value = Hi_9 '9月の給与支給日' Cells(24, Column_10).Value = Hi_10 '10月の給与支給日' Cells(24, Column_11).Value = Hi_11 '11月の給与支給日' Cells(24, Column_12).Value = Hi_12 '12月の給与支給日' Cells(23, Column_S1).Value = Tsuki_S1 '賞与1回目の支給月' Cells(23, Column_S2).Value = Tsuki_S2 '賞与2回目の支給月' Cells(23, Column_S3).Value = Tsuki_S3 '賞与3回目の支給月' Cells(23, Column_S4).Value = Tsuki_S4 '賞与4回目の支給月' Cells(24, Column_S1).Value = Hi_S1 '賞与1回目の支給日' Cells(24, Column_S2).Value = Hi_S2 '賞与2回目の支給日' Cells(24, Column_S3).Value = Hi_S3 '賞与3回目の支給日' Cells(24, Column_S4).Value = Hi_S4 '賞与4回目の支給日' For i = 1 To Data_Num '従業員No、名前' Cells(5 * i + 21, Column_Num).Value = Num(i) '従業員No' Cells(5 * i + 21, Column_SeiMei).Value = Replace(Replace(Sei(i) & Mei(i), " ", ""), " ", "") '名前' '7月分' Cells(5 * i + 21, Column_7).Value = Kyuyo_7(i) '総支給額' Cells(5 * i + 23, Column_7).Value = Syaho_7(i) '社会保険料' Cells(5 * i + 24, Column_7).Value = Gensen_7(i) '源泉所得税' '8月分' Cells(5 * i + 21, Column_8).Value = Kyuyo_8(i) '総支給額' Cells(5 * i + 23, Column_8).Value = Syaho_8(i) '社会保険料' Cells(5 * i + 24, Column_8).Value = Gensen_8(i) '源泉所得税' '9月分' Cells(5 * i + 21, Column_9).Value = Kyuyo_9(i) '総支給額' Cells(5 * i + 23, Column_9).Value = Syaho_9(i) '社会保険料' Cells(5 * i + 24, Column_9).Value = Gensen_9(i) '源泉所得税' '10月分' Cells(5 * i + 21, Column_10).Value = Kyuyo_10(i) '総支給額' Cells(5 * i + 23, Column_10).Value = Syaho_10(i) '社会保険料' Cells(5 * i + 24, Column_10).Value = Gensen_10(i) '源泉所得税' '11月分' Cells(5 * i + 21, Column_11).Value = Kyuyo_11(i) '総支給額' Cells(5 * i + 23, Column_11).Value = Syaho_11(i) '社会保険料' Cells(5 * i + 24, Column_11).Value = Gensen_11(i) '源泉所得税' '12月分' Cells(5 * i + 21, Column_12).Value = Kyuyo_12(i) '総支給額' Cells(5 * i + 23, Column_12).Value = Syaho_12(i) '社会保険料' Cells(5 * i + 24, Column_12).Value = Gensen_12(i) '源泉所得税' '賞与1回目' Cells(5 * i + 21, Column_S1).Value = Kyuyo_S1(i) '総支給額' Cells(5 * i + 23, Column_S1).Value = Syaho_S1(i) '社会保険料' Cells(5 * i + 24, Column_S1).Value = Gensen_S1(i) '源泉所得税' '賞与2回目' Cells(5 * i + 21, Column_S2).Value = Kyuyo_S2(i) '総支給額' Cells(5 * i + 23, Column_S2).Value = Syaho_S2(i) '社会保険料' Cells(5 * i + 24, Column_S2).Value = Gensen_S2(i) '源泉所得税' '賞与3回目' Cells(5 * i + 21, Column_S3).Value = Kyuyo_S3(i) '総支給額' Cells(5 * i + 23, Column_S3).Value = Syaho_S3(i) '社会保険料' Cells(5 * i + 24, Column_S3).Value = Gensen_S3(i) '源泉所得税' '賞与4回目' Cells(5 * i + 21, Column_S4).Value = Kyuyo_S4(i) '総支給額' Cells(5 * i + 23, Column_S4).Value = Syaho_S4(i) '社会保険料' Cells(5 * i + 24, Column_S4).Value = Gensen_S4(i) '源泉所得税' Next i Label2: Worksheets(Sheet_Name).Activate Application.ScreenUpdating = True End Sub |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Function Hi_Change(x) Hi_Change = Replace(x, ".", "/") Hi_Change = Replace(Hi_Change, "H31", "2019") Hi_Change = Replace(Hi_Change, "R1", "2019") Hi_Change = Replace(Hi_Change, "R2", "2020") Hi_Change = Replace(Hi_Change, "R3", "2021") Hi_Change = Replace(Hi_Change, "R4", "2022") Hi_Change = Replace(Hi_Change, "R5", "2023") Hi_Change = Replace(Hi_Change, "R6", "2024") Hi_Change = Replace(Hi_Change, "R7", "2025") Hi_Change = Replace(Hi_Change, "R8", "2026") Hi_Change = Replace(Hi_Change, "R9", "2027") Hi_Change = Replace(Hi_Change, "R10", "2028") End Function |
VBA コード解説
さて、コードの主な部分を解説をしていきます。
従業員の情報
Excel シート上で表示できる従業員の人数は最大10人としています。
1~12月の各月ごとに、各従業員の以下のデータを、
「JDLからの読み込み」シートから読み出して、配列(データ数10個)に入れています。
・総支給額
・社会保険料
・源泉所得税
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
'1月分' Dim Hi_1 '1月の支給日' Dim Kyuyo_1(1 To 10) As Long '1月の総支給額' Dim Syaho_1(1 To 10) As Long '1月の社会保険料' Dim Gensen_1(1 To 10) As Long '1月の源泉所得税' '2月分' Dim Hi_2 '2月の支給日' Dim Kyuyo_2(1 To 10) As Long '2月の総支給額' Dim Syaho_2(1 To 10) As Long '2月の社会保険料' Dim Gensen_2(1 To 10) As Long '2月の源泉所得税' '3月分' Dim Hi_3 '3月の支給日' Dim Kyuyo_3(1 To 10) As Long '3月の総支給額' Dim Syaho_3(1 To 10) As Long '3月の社会保険料' Dim Gensen_3(1 To 10) As Long '3月の源泉所得税' '4月分' Dim Hi_4 '4月の支給日' Dim Kyuyo_4(1 To 10) As Long '4月の総支給額' Dim Syaho_4(1 To 10) As Long '4月の社会保険料' Dim Gensen_4(1 To 10) As Long '4月の源泉所得税' '5月分' Dim Hi_5 '5月の支給日' Dim Kyuyo_5(1 To 10) As Long '5月の総支給額' Dim Syaho_5(1 To 10) As Long '5月の社会保険料' Dim Gensen_5(1 To 10) As Long '5月の源泉所得税' '6月分' Dim Hi_6 '6月の支給日' Dim Kyuyo_6(1 To 10) As Long '6月の総支給額' Dim Syaho_6(1 To 10) As Long '6月の社会保険料' Dim Gensen_6(1 To 10) As Long '6月の源泉所得税' '7月分' Dim Hi_7 '7月の支給日' Dim Kyuyo_7(1 To 10) As Long '7月の総支給額' Dim Syaho_7(1 To 10) As Long '7月の社会保険料' Dim Gensen_7(1 To 10) As Long '7月の源泉所得税' '8月分' Dim Hi_8 '8月の支給日' Dim Kyuyo_8(1 To 10) As Long '8月の総支給額' Dim Syaho_8(1 To 10) As Long '8月の社会保険料' Dim Gensen_8(1 To 10) As Long '8月の源泉所得税' '9月分' Dim Hi_9 '9月の支給日' Dim Kyuyo_9(1 To 10) As Long '9月の総支給額' Dim Syaho_9(1 To 10) As Long '9月の社会保険料' Dim Gensen_9(1 To 10) As Long '9月の源泉所得税' '10月分' Dim Hi_10 '10月の支給日' Dim Kyuyo_10(1 To 10) As Long '10月の総支給額' Dim Syaho_10(1 To 10) As Long '10月の社会保険料' Dim Gensen_10(1 To 10) As Long '10月の源泉所得税' '11月分' Dim Hi_11 '11月の支給日' Dim Kyuyo_11(1 To 10) As Long '11月の総支給額' Dim Syaho_11(1 To 10) As Long '11月の社会保険料' Dim Gensen_11(1 To 10) As Long '11月の源泉所得税' '12月分' Dim Hi_12 '12月の支給日' Dim Kyuyo_12(1 To 10) As Long '12月の総支給額' Dim Syaho_12(1 To 10) As Long '12月の社会保険料' Dim Gensen_12(1 To 10) As Long '12月の源泉所得税' '賞与1回目' Dim Tsuki_S1 '賞与1回目の支給月' Dim Hi_S1 '賞与1回目の支給日' Dim Kyuyo_S1(1 To 10) As Long '賞与1回目の総支給額' Dim Syaho_S1(1 To 10) As Long '賞与1回目の社会保険料' Dim Gensen_S1(1 To 10) As Long '賞与1回目の源泉所得税' '賞与2回目' Dim Tsuki_S2 '賞与2回目の支給月' Dim Hi_S2 '賞与2回目の支給日' Dim Kyuyo_S2(1 To 10) As Long '賞与2回目の総支給額' Dim Syaho_S2(1 To 10) As Long '賞与2回目の社会保険料' Dim Gensen_S2(1 To 10) As Long '賞与2回目の源泉所得税' '賞与3回目' Dim Tsuki_S3 '賞与3回目の支給月' Dim Hi_S3 '賞与3回目の支給日' Dim Kyuyo_S3(1 To 10) As Long '賞与3回目の総支給額' Dim Syaho_S3(1 To 10) As Long '賞与3回目の社会保険料' Dim Gensen_S3(1 To 10) As Long '賞与3回目の源泉所得税' '賞与4回目' Dim Tsuki_S4 '賞与4回目の支給月' Dim Hi_S4 '賞与4回目の支給日' Dim Kyuyo_S4(1 To 10) As Long '賞与4回目の総支給額' Dim Syaho_S4(1 To 10) As Long '賞与4回目の社会保険料' Dim Gensen_S4(1 To 10) As Long '賞与4回目の源泉所得税' '前職' Dim Kyuyo_Zen(1 To 10) As Long '前職の総支給額' Dim Syaho_Zen(1 To 10) As Long '前職の社会保険料' Dim Gensen_Zen(1 To 10) As Long '前職の源泉所得税' |
年末調整システムのデータ項目の列番号取得
年末調整システムから出力したままのデータは各項目が横一列に並べられいます。
例えば以下のような項目です。
・給料1月 支給年月日
・給料1月 総支給額
・給料1月 社会保険
・給料1月 源泉税額
そして、項目ごとの従業員のデータが行の上から順番に並べられています。
必要なデータがどの列にあるか、For 文を使って列番号を検索しています。
さて、なぜ検索するようにしているかと言うと、年末調整システムの仕様変更でデータの並びが変わることがあるので、
列番号を数字で指定すると、仕様変更の度にコードを変更する必要が出てきてしまうからです。
それでは汎用性がないので、コード変更の必要が無いようにしました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 |
'1月分 支給日、総支給額、社会保険料、源泉所得税 の列番号' Dim HiL_1: Dim KyuyoL_1: Dim SyahoL_1: Dim GensenL_1 '2月分' Dim HiL_2: Dim KyuyoL_2: Dim SyahoL_2: Dim GensenL_2 '3月分' Dim HiL_3: Dim KyuyoL_3: Dim SyahoL_3: Dim GensenL_3 '4月分' Dim HiL_4: Dim KyuyoL_4: Dim SyahoL_4: Dim GensenL_4 '5月分' Dim HiL_5: Dim KyuyoL_5: Dim SyahoL_5: Dim GensenL_5 '6月分' Dim HiL_6: Dim KyuyoL_6: Dim SyahoL_6: Dim GensenL_6 '7月分' Dim HiL_7: Dim KyuyoL_7: Dim SyahoL_7: Dim GensenL_7 '8月分' Dim HiL_8: Dim KyuyoL_8: Dim SyahoL_8: Dim GensenL_8 '9月分' Dim HiL_9: Dim KyuyoL_9: Dim SyahoL_9: Dim GensenL_9 '10月分' Dim HiL_10: Dim KyuyoL_10: Dim SyahoL_10: Dim GensenL_10 '11月分' Dim HiL_11: Dim KyuyoL_11: Dim SyahoL_11: Dim GensenL_11 '12月分' Dim HiL_12: Dim KyuyoL_12: Dim SyahoL_12: Dim GensenL_12 '賞与1回目' Dim HiL_S1: Dim KyuyoL_S1: Dim SyahoL_S1: Dim GensenL_S1 '賞与2回目' Dim HiL_S2: Dim KyuyoL_S2: Dim SyahoL_S2: Dim GensenL_S2 '賞与3回目' Dim HiL_S3: Dim KyuyoL_S3: Dim SyahoL_S3: Dim GensenL_S3 '賞与4回目' Dim HiL_S4: Dim KyuyoL_S4: Dim SyahoL_S4: Dim GensenL_S4 '前職' Dim KyuyoL_Zen: Dim SyahoL_Zen: Dim GensenL_Zen '出力時の列番号' Dim Column_Num: Dim Column_SeiMei Dim Column_1: Dim Column_2: Dim Column_3: Dim Column_4: Dim Column_5: Dim Column_6 '1~6月' Dim Column_Zen '前職' Dim Column_7: Dim Column_8: Dim Column_9: Dim Column_10: Dim Column_11: Dim Column_12 '7~12月' Dim Column_S1: Dim Column_S2: Dim Column_S3: Dim Column_S4 '賞与1~4月' Sheet_Name = ActiveSheet.Name Worksheets("JDLからの読み込み").Activate '各項目の列番号の取得' For i = 1 To 500 Select Case Cells(Start_Gyou - 1, i).Value '給与' Case "給料1月 支給年月日": HiL_1 = i Case "給料1月 総支給額": KyuyoL_1 = i Case "給料1月 社会保険": SyahoL_1 = i Case "給料1月 源泉税額": GensenL_1 = i Case "給料2月 支給年月日": HiL_2 = i Case "給料2月 総支給額": KyuyoL_2 = i Case "給料2月 社会保険": SyahoL_2 = i Case "給料2月 源泉税額": GensenL_2 = i Case "給料3月 支給年月日": HiL_3 = i Case "給料3月 総支給額": KyuyoL_3 = i Case "給料3月 社会保険": SyahoL_3 = i Case "給料3月 源泉税額": GensenL_3 = i Case "給料4月 支給年月日": HiL_4 = i Case "給料4月 総支給額": KyuyoL_4 = i Case "給料4月 社会保険": SyahoL_4 = i Case "給料4月 源泉税額": GensenL_4 = i Case "給料5月 支給年月日": HiL_5 = i Case "給料5月 総支給額": KyuyoL_5 = i Case "給料5月 社会保険": SyahoL_5 = i Case "給料5月 源泉税額": GensenL_5 = i Case "給料6月 支給年月日": HiL_6 = i Case "給料6月 総支給額": KyuyoL_6 = i Case "給料6月 社会保険": SyahoL_6 = i Case "給料6月 源泉税額": GensenL_6 = i Case "給料7月 支給年月日": HiL_7 = i Case "給料7月 総支給額": KyuyoL_7 = i Case "給料7月 社会保険": SyahoL_7 = i Case "給料7月 源泉税額": GensenL_7 = i Case "給料8月 支給年月日": HiL_8 = i Case "給料8月 総支給額": KyuyoL_8 = i Case "給料8月 社会保険": SyahoL_8 = i Case "給料8月 源泉税額": GensenL_8 = i Case "給料9月 支給年月日": HiL_9 = i Case "給料9月 総支給額": KyuyoL_9 = i Case "給料9月 社会保険": SyahoL_9 = i Case "給料9月 源泉税額": GensenL_9 = i Case "給料10月 支給年月日": HiL_10 = i Case "給料10月 総支給額": KyuyoL_10 = i Case "給料10月 社会保険": SyahoL_10 = i Case "給料10月 源泉税額": GensenL_10 = i Case "給料11月 支給年月日": HiL_11 = i Case "給料11月 総支給額": KyuyoL_11 = i Case "給料11月 社会保険": SyahoL_11 = i Case "給料11月 源泉税額": GensenL_11 = i Case "給料12月 支給年月日": HiL_12 = i Case "給料12月 総支給額": KyuyoL_12 = i Case "給料12月 社会保険": SyahoL_12 = i Case "給料12月 源泉税額": GensenL_12 = i '賞与' Case "賞与1回 支給年月日": HiL_S1 = i Case "賞与1回 総支給額": KyuyoL_S1 = i Case "賞与1回 社会保険": SyahoL_S1 = i Case "賞与1回 源泉税額": GensenL_S1 = i Case "賞与2回 支給年月日": HiL_S2 = i Case "賞与2回 総支給額": KyuyoL_S2 = i Case "賞与2回 社会保険": SyahoL_S2 = i Case "賞与2回 源泉税額": GensenL_S2 = i Case "賞与3回 支給年月日": HiL_S3 = i Case "賞与3回 総支給額": KyuyoL_S3 = i Case "賞与3回 社会保険": SyahoL_S3 = i Case "賞与3回 源泉税額": GensenL_S3 = i Case "賞与4回 支給年月日": HiL_S4 = i Case "賞与4回 総支給額": KyuyoL_S4 = i Case "賞与4回 社会保険": SyahoL_S4 = i Case "賞与4回 源泉税額": GensenL_S4 = i Case "前職分 総支給額": KyuyoL_Zen = i Case "前職分 社会保険": SyahoL_Zen = i Case "前職分 源泉税額": GensenL_Zen = i Case Else End Select Next i |
従業員数の確認
For 文を使って従業員数をカウントしています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
'従業員数のカウント' For i = 1 To 500 If Cells(Start_Gyou + i - 1, 1).Value <> "<総合データ終了>" Then Data_Num = Data_Num + 1 Else Exit For End If Next i '従業員数が10人超えたので対応できません コメント' If Data_Num > 10 Then MsgBox "従業員数が10人を超えているので表示できません。" Exit Sub Else End If |
1列目の上から順番に従業員の番号を読んで行き、〇〇という文字が出てきたらその行より下はいないことになるので、それを使って人数を把握しています。
従業員数ごとのデータを配列に入れ込む
For 文を使って、支給日と各従業員ごとの以下のデータを配列に入れ込んでいます。
・総支給額
・社会保険料
・源泉所得税
ポイントは列番号を変数で指定いていることです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 |
'日付データの変換' '1月' If Cells(Start_Gyou - 1 + 1, HiL_1) = "" Then Hi_1 = "" Else Cells(Start_Gyou - 1 + 1, HiL_1).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_1).Value) Hi_1 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_1).Value)) End If '2月' If Cells(Start_Gyou - 1 + 1, HiL_2) = "" Then Hi_2 = "" Else Cells(Start_Gyou - 1 + 1, HiL_2).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_2).Value) Hi_2 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_2).Value)) End If '3月' If Cells(Start_Gyou - 1 + 1, HiL_3) = "" Then Hi_3 = "" Else Cells(Start_Gyou - 1 + 1, HiL_3).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_3).Value) Hi_3 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_3).Value)) End If '4月' If Cells(Start_Gyou - 1 + 1, HiL_4) = "" Then Hi_4 = "" Else Cells(Start_Gyou - 1 + 1, HiL_4).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_4).Value) Hi_4 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_4).Value)) End If '5月' If Cells(Start_Gyou - 1 + 1, HiL_5) = "" Then Hi_5 = "" Else Cells(Start_Gyou - 1 + 1, HiL_5).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_5).Value) Hi_5 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_5).Value)) End If '6月' If Cells(Start_Gyou - 1 + 1, HiL_6) = "" Then Hi_6 = "" Else Cells(Start_Gyou - 1 + 1, HiL_6).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_6).Value) Hi_6 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_6).Value)) End If '7月' If Cells(Start_Gyou - 1 + 1, HiL_7) = "" Then Hi_7 = "" Else Cells(Start_Gyou - 1 + 1, HiL_7).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_7).Value) Hi_7 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_7).Value)) End If '8月' If Cells(Start_Gyou - 1 + 1, HiL_8) = "" Then Hi_8 = "" Else Cells(Start_Gyou - 1 + 1, HiL_8).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_8).Value) Hi_8 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_8).Value)) End If '9月' If Cells(Start_Gyou - 1 + 1, HiL_9) = "" Then Hi_9 = "" Else Cells(Start_Gyou - 1 + 1, HiL_9).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_9).Value) Hi_9 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_9).Value)) End If '10月' If Cells(Start_Gyou - 1 + 1, HiL_10) = "" Then Hi_10 = "" Else Cells(Start_Gyou - 1 + 1, HiL_10).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_10).Value) Hi_10 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_10).Value)) End If '11月' If Cells(Start_Gyou - 1 + 1, HiL_11) = "" Then Hi_11 = "" Else Cells(Start_Gyou - 1 + 1, HiL_11).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_11).Value) Hi_11 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_11).Value)) End If '12月' If Cells(Start_Gyou - 1 + 1, HiL_12) = "" Then Hi_12 = "" Else Cells(Start_Gyou - 1 + 1, HiL_12).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_12).Value) Hi_12 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_12).Value)) End If '賞与1回目 日付' If Cells(Start_Gyou - 1 + 1, HiL_S1) = "" Then Tsuki_S1 = "": Hi_S1 = "" Else Cells(Start_Gyou - 1 + 1, HiL_S1).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_S1).Value) Tsuki_S1 = Month(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_S1).Value)) Hi_S1 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_S1).Value)) End If '賞与2回目 日付' If Cells(Start_Gyou - 1 + 1, HiL_S2) = "" Then Tsuki_S2 = "": Hi_S2 = "" Else Cells(Start_Gyou - 1 + 1, HiL_S2).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_S2).Value) Tsuki_S2 = Month(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_S2).Value)) Hi_S2 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_S2).Value)) End If '賞与3回目 日付' If Cells(Start_Gyou - 1 + 1, HiL_S3) = "" Then Tsuki_S3 = "": Hi_S3 = "" Else Cells(Start_Gyou - 1 + 1, HiL_S3).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_S3).Value) Tsuki_S3 = Month(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_S3).Value)) Hi_S3 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_S3).Value)) End If '賞与4回目 日付' If Cells(Start_Gyou - 1 + 1, HiL_S4) = "" Then Tsuki_S4 = "": Hi_S4 = "" Else Cells(Start_Gyou - 1 + 1, HiL_S4).Value = Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_S4).Value) Tsuki_S4 = Month(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_S4).Value)) Hi_S4 = Day(Hi_Change(Cells(Start_Gyou - 1 + 1, HiL_S4).Value)) End If For i = 1 To Data_Num Num(i) = Cells(Start_Gyou + i - 1, 1).Value Sei(i) = Cells(Start_Gyou + i - 1, 2).Value Mei(i) = Cells(Start_Gyou + i - 1, 3).Value '給与' Cells(Start_Gyou + i - 1 + 1, HiL_1).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_1).Value) '日付データ置き換え' Kyuyo_1(i) = Cells(Start_Gyou + i - 1, KyuyoL_1).Value '1月の総支給額' Syaho_1(i) = Cells(Start_Gyou + i - 1, SyahoL_1).Value '1月の社会保険料' Gensen_1(i) = Cells(Start_Gyou + i - 1, GensenL_1).Value '1月の社会保険料' Cells(Start_Gyou + i - 1 + 1, HiL_2).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_2).Value) '日付データ置き換え' Kyuyo_2(i) = Cells(Start_Gyou + i - 1, KyuyoL_2).Value '2月の総支給額' Syaho_2(i) = Cells(Start_Gyou + i - 1, SyahoL_2).Value '2月の社会保険料' Gensen_2(i) = Cells(Start_Gyou + i - 1, GensenL_2).Value '2月の社会保険料' Cells(Start_Gyou + i - 1 + 1, HiL_3).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_3).Value) '日付データ置き換え' Kyuyo_3(i) = Cells(Start_Gyou + i - 1, KyuyoL_3).Value '3月の総支給額' Syaho_3(i) = Cells(Start_Gyou + i - 1, SyahoL_3).Value '3月の社会保険料' Gensen_3(i) = Cells(Start_Gyou + i - 1, GensenL_3).Value '3月の社会保険料' Cells(Start_Gyou + i - 1 + 1, HiL_4).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_4).Value) '日付データ置き換え' Kyuyo_4(i) = Cells(Start_Gyou + i - 1, KyuyoL_4).Value '4月の総支給額' Syaho_4(i) = Cells(Start_Gyou + i - 1, SyahoL_4).Value '4月の社会保険料' Gensen_4(i) = Cells(Start_Gyou + i - 1, GensenL_4).Value '4月の社会保険料' Cells(Start_Gyou + i - 1 + 1, HiL_5).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_5).Value) '日付データ置き換え' Kyuyo_5(i) = Cells(Start_Gyou + i - 1, KyuyoL_5).Value '5月の総支給額' Syaho_5(i) = Cells(Start_Gyou + i - 1, SyahoL_5).Value '5月の社会保険料' Gensen_5(i) = Cells(Start_Gyou + i - 1, GensenL_5).Value '5月の社会保険料' Cells(Start_Gyou + i - 1 + 1, HiL_6).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_6).Value) '日付データ置き換え' Kyuyo_6(i) = Cells(Start_Gyou + i - 1, KyuyoL_6).Value '6月の総支給額' Syaho_6(i) = Cells(Start_Gyou + i - 1, SyahoL_6).Value '6月の社会保険料' Gensen_6(i) = Cells(Start_Gyou + i - 1, GensenL_6).Value '6月の社会保険料' Cells(Start_Gyou + i - 1 + 1, HiL_7).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_7).Value) '日付データ置き換え' Kyuyo_7(i) = Cells(Start_Gyou + i - 1, KyuyoL_7).Value '7月の総支給額' Syaho_7(i) = Cells(Start_Gyou + i - 1, SyahoL_7).Value '7月の社会保険料' Gensen_7(i) = Cells(Start_Gyou + i - 1, GensenL_7).Value '7月の社会保険料' Cells(Start_Gyou + i - 1 + 1, HiL_8).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_8).Value) '日付データ置き換え' Kyuyo_8(i) = Cells(Start_Gyou + i - 1, KyuyoL_8).Value '8月の総支給額' Syaho_8(i) = Cells(Start_Gyou + i - 1, SyahoL_8).Value '8月の社会保険料' Gensen_8(i) = Cells(Start_Gyou + i - 1, GensenL_8).Value '8月の社会保険料' Cells(Start_Gyou + i - 1 + 1, HiL_9).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_9).Value) '日付データ置き換え' Kyuyo_9(i) = Cells(Start_Gyou + i - 1, KyuyoL_9).Value '9月の総支給額' Syaho_9(i) = Cells(Start_Gyou + i - 1, SyahoL_9).Value '9月の社会保険料' Gensen_9(i) = Cells(Start_Gyou + i - 1, GensenL_9).Value '9月の社会保険料' Cells(Start_Gyou + i - 1 + 1, HiL_10).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_10).Value) '日付データ置き換え' Kyuyo_10(i) = Cells(Start_Gyou + i - 1, KyuyoL_10).Value '10月の総支給額' Syaho_10(i) = Cells(Start_Gyou + i - 1, SyahoL_10).Value '10月の社会保険料' Gensen_10(i) = Cells(Start_Gyou + i - 1, GensenL_10).Value '10月の社会保険料' Cells(Start_Gyou + i - 1 + 1, HiL_11).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_11).Value) '日付データ置き換え' Kyuyo_11(i) = Cells(Start_Gyou + i - 1, KyuyoL_11).Value '11月の総支給額' Syaho_11(i) = Cells(Start_Gyou + i - 1, SyahoL_11).Value '11月の社会保険料' Gensen_11(i) = Cells(Start_Gyou + i - 1, GensenL_11).Value '11月の社会保険料' Cells(Start_Gyou + i - 1 + 1, HiL_12).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_12).Value) '日付データ置き換え' Kyuyo_12(i) = Cells(Start_Gyou + i - 1, KyuyoL_12).Value '12月の総支給額' Syaho_12(i) = Cells(Start_Gyou + i - 1, SyahoL_12).Value '12月の社会保険料' Gensen_12(i) = Cells(Start_Gyou + i - 1, GensenL_12).Value '12月の社会保険料' '賞与' Cells(Start_Gyou + i - 1 + 1, HiL_S1).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_S1).Value) '日付データ置き換え' Kyuyo_S1(i) = Cells(Start_Gyou + i - 1, KyuyoL_S1).Value '賞与1回目の総支給額' Syaho_S1(i) = Cells(Start_Gyou + i - 1, SyahoL_S1).Value '賞与1回目の社会保険料' Gensen_S1(i) = Cells(Start_Gyou + i - 1, GensenL_S1).Value '賞与1回目の源泉所得税' Cells(Start_Gyou + i - 1 + 1, HiL_S2).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_S2).Value) '日付データ置き換え' Kyuyo_S2(i) = Cells(Start_Gyou + i - 1, KyuyoL_S2).Value '賞与2回目の総支給額' Syaho_S2(i) = Cells(Start_Gyou + i - 1, SyahoL_S2).Value '賞与2回目の社会保険料' Gensen_S2(i) = Cells(Start_Gyou + i - 1, GensenL_S2).Value '賞与2回目の源泉所得税' Cells(Start_Gyou + i - 1 + 1, HiL_S3).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_S3).Value) '日付データ置き換え' Kyuyo_S3(i) = Cells(Start_Gyou + i - 1, KyuyoL_S3).Value '賞与3回目の総支給額' Syaho_S3(i) = Cells(Start_Gyou + i - 1, SyahoL_S3).Value '賞与3回目の社会保険料' Gensen_S3(i) = Cells(Start_Gyou + i - 1, GensenL_S3).Value '賞与3回目の源泉所得税' Cells(Start_Gyou + i - 1 + 1, HiL_S4).Value = Hi_Change(Cells(Start_Gyou + i - 1 + 1, HiL_S4).Value) '日付データ置き換え' Kyuyo_S4(i) = Cells(Start_Gyou + i - 1, KyuyoL_S4).Value '賞与4回目の総支給額' Syaho_S4(i) = Cells(Start_Gyou + i - 1, SyahoL_S4).Value '賞与4回目の社会保険料' Gensen_S4(i) = Cells(Start_Gyou + i - 1, GensenL_S4).Value '賞与4回目の源泉所得税' '前職' Kyuyo_Zen(i) = Cells(Start_Gyou + i - 1, KyuyoL_Zen).Value '前職の総支給額' Syaho_Zen(i) = Cells(Start_Gyou + i - 1, SyahoL_Zen).Value '前職の社会保険料' Gensen_Zen(i) = Cells(Start_Gyou + i - 1, GensenL_Zen).Value '前職の源泉所得税' Next i |
変数の中には、先に読み込んだ番号が入っています。
配列のデータを「1〜6月_給料」シート、「7〜12月_給料」シートに出力
先に配列に読み込んだ各従業員のデータを
・「1〜6月_給料」シート
・「7〜12月_給料」シート
に出力しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 |
'JDL 年調システムのデータをシートに出力する' Column_Num = 17 '従業員Noの列番号' Column_SeiMei = 18 '名前の列番号' Column_1 = 19 '1月の列番号' Column_2 = 20 '2月の列番号' Column_3 = 21 '3月の列番号' Column_4 = 22 '4月の列番号' Column_5 = 23 '5月の列番号' Column_6 = 24 '6月の列番号' Column_Zen = 26 '賞与4回目の列番号' Column_7 = 19 '7月の列番号' Column_8 = 20 '8月の列番号' Column_9 = 21 '9月の列番号' Column_10 = 22 '10月の列番号' Column_11 = 23 '11月の列番号' Column_12 = 24 '12月の列番号' Column_S1 = 27 '賞与1回目の列番号' Column_S2 = 28 '賞与2回目の列番号' Column_S3 = 29 '賞与3回目の列番号' Column_S4 = 30 '賞与4回目の列番号' '7~12月分のシート上で「データ再読込」する場合' If ASheet_Name = "7~12月_給料" Then GoTo Label1 Else End If Worksheets("1~6月_給料").Activate Cells(24, Column_1).Value = Hi_1 '1月の給与支給日' Cells(24, Column_2).Value = Hi_2 '2月の給与支給日' Cells(24, Column_3).Value = Hi_3 '3月の給与支給日' Cells(24, Column_4).Value = Hi_4 '4月の給与支給日' Cells(24, Column_5).Value = Hi_5 '5月の給与支給日' Cells(24, Column_6).Value = Hi_6 '6月の給与支給日' Cells(24, Column_Zen).Value = Hi_Zen '前職の給与支給日' For i = 1 To Data_Num '従業員 Data_Num 人分' '従業員No、名前' Cells(5 * i + 21, Column_Num).Value = Num(i) '従業員No' Cells(5 * i + 21, Column_SeiMei).Value = Replace(Replace(Sei(i) & Mei(i), " ", ""), " ", "") '名前' '1月分' Cells(5 * i + 21, Column_1).Value = Kyuyo_1(i) '総支給額' Cells(5 * i + 23, Column_1).Value = Syaho_1(i) '社会保険料' Cells(5 * i + 24, Column_1).Value = Gensen_1(i) '源泉所得税' '2月分' Cells(5 * i + 21, Column_2).Value = Kyuyo_2(i) '総支給額' Cells(5 * i + 23, Column_2).Value = Syaho_2(i) '社会保険料' Cells(5 * i + 24, Column_2).Value = Gensen_2(i) '源泉所得税' '3月分' Cells(5 * i + 21, Column_3).Value = Kyuyo_3(i) '総支給額' Cells(5 * i + 23, Column_3).Value = Syaho_3(i) '社会保険料' Cells(5 * i + 24, Column_3).Value = Gensen_3(i) '源泉所得税' '4月分' Cells(5 * i + 21, Column_4).Value = Kyuyo_4(i) '総支給額' Cells(5 * i + 23, Column_4).Value = Syaho_4(i) '社会保険料' Cells(5 * i + 24, Column_4).Value = Gensen_4(i) '源泉所得税' '5月分' Cells(5 * i + 21, Column_5).Value = Kyuyo_5(i) '総支給額' Cells(5 * i + 23, Column_5).Value = Syaho_5(i) '社会保険料' Cells(5 * i + 24, Column_5).Value = Gensen_5(i) '源泉所得税' '6月分' Cells(5 * i + 21, Column_6).Value = Kyuyo_6(i) '総支給額' Cells(5 * i + 23, Column_6).Value = Syaho_6(i) '社会保険料' Cells(5 * i + 24, Column_6).Value = Gensen_6(i) '源泉所得税' '前職' Cells(5 * i + 21, Column_Zen).Value = Kyuyo_Zen(i) '総支給額' Cells(5 * i + 23, Column_Zen).Value = Syaho_Zen(i) '社会保険料' Cells(5 * i + 24, Column_Zen).Value = Gensen_Zen(i) '源泉所得税' Next i Label1: If ASheet_Name = "1~6月_給料" Then GoTo Label2 Else End If Worksheets("7~12月_給料").Activate Cells(24, Column_7).Value = Hi_7 '7月の給与支給日' Cells(24, Column_8).Value = Hi_8 '8月の給与支給日' Cells(24, Column_9).Value = Hi_9 '9月の給与支給日' Cells(24, Column_10).Value = Hi_10 '10月の給与支給日' Cells(24, Column_11).Value = Hi_11 '11月の給与支給日' Cells(24, Column_12).Value = Hi_12 '12月の給与支給日' Cells(23, Column_S1).Value = Tsuki_S1 '賞与1回目の支給月' Cells(23, Column_S2).Value = Tsuki_S2 '賞与2回目の支給月' Cells(23, Column_S3).Value = Tsuki_S3 '賞与3回目の支給月' Cells(23, Column_S4).Value = Tsuki_S4 '賞与4回目の支給月' Cells(24, Column_S1).Value = Hi_S1 '賞与1回目の支給日' Cells(24, Column_S2).Value = Hi_S2 '賞与2回目の支給日' Cells(24, Column_S3).Value = Hi_S3 '賞与3回目の支給日' Cells(24, Column_S4).Value = Hi_S4 '賞与4回目の支給日' For i = 1 To Data_Num '従業員No、名前' Cells(5 * i + 21, Column_Num).Value = Num(i) '従業員No' Cells(5 * i + 21, Column_SeiMei).Value = Replace(Replace(Sei(i) & Mei(i), " ", ""), " ", "") '名前' '7月分' Cells(5 * i + 21, Column_7).Value = Kyuyo_7(i) '総支給額' Cells(5 * i + 23, Column_7).Value = Syaho_7(i) '社会保険料' Cells(5 * i + 24, Column_7).Value = Gensen_7(i) '源泉所得税' '8月分' Cells(5 * i + 21, Column_8).Value = Kyuyo_8(i) '総支給額' Cells(5 * i + 23, Column_8).Value = Syaho_8(i) '社会保険料' Cells(5 * i + 24, Column_8).Value = Gensen_8(i) '源泉所得税' '9月分' Cells(5 * i + 21, Column_9).Value = Kyuyo_9(i) '総支給額' Cells(5 * i + 23, Column_9).Value = Syaho_9(i) '社会保険料' Cells(5 * i + 24, Column_9).Value = Gensen_9(i) '源泉所得税' '10月分' Cells(5 * i + 21, Column_10).Value = Kyuyo_10(i) '総支給額' Cells(5 * i + 23, Column_10).Value = Syaho_10(i) '社会保険料' Cells(5 * i + 24, Column_10).Value = Gensen_10(i) '源泉所得税' '11月分' Cells(5 * i + 21, Column_11).Value = Kyuyo_11(i) '総支給額' Cells(5 * i + 23, Column_11).Value = Syaho_11(i) '社会保険料' Cells(5 * i + 24, Column_11).Value = Gensen_11(i) '源泉所得税' '12月分' Cells(5 * i + 21, Column_12).Value = Kyuyo_12(i) '総支給額' Cells(5 * i + 23, Column_12).Value = Syaho_12(i) '社会保険料' Cells(5 * i + 24, Column_12).Value = Gensen_12(i) '源泉所得税' '賞与1回目' Cells(5 * i + 21, Column_S1).Value = Kyuyo_S1(i) '総支給額' Cells(5 * i + 23, Column_S1).Value = Syaho_S1(i) '社会保険料' Cells(5 * i + 24, Column_S1).Value = Gensen_S1(i) '源泉所得税' '賞与2回目' Cells(5 * i + 21, Column_S2).Value = Kyuyo_S2(i) '総支給額' Cells(5 * i + 23, Column_S2).Value = Syaho_S2(i) '社会保険料' Cells(5 * i + 24, Column_S2).Value = Gensen_S2(i) '源泉所得税' '賞与3回目' Cells(5 * i + 21, Column_S3).Value = Kyuyo_S3(i) '総支給額' Cells(5 * i + 23, Column_S3).Value = Syaho_S3(i) '社会保険料' Cells(5 * i + 24, Column_S3).Value = Gensen_S3(i) '源泉所得税' '賞与4回目' Cells(5 * i + 21, Column_S4).Value = Kyuyo_S4(i) '総支給額' Cells(5 * i + 23, Column_S4).Value = Syaho_S4(i) '社会保険料' Cells(5 * i + 24, Column_S4).Value = Gensen_S4(i) '源泉所得税' Next i Label2: |
従業員の数は変数 Data_Num で指定し、i を1から Data_Num まで変化させています。
そして、総支給額、社会保険料、源泉所得税を書き出します。
何行目に書き出すか、変数 i を使って指定しています。
・総支給額 5 * i + 21 行目
・社会保険料 5 * i + 23 行目
・源泉所得税 5 * i + 24 行目
Function プロシージャで和暦を西暦に変換
年末調整システムから取り出したデータの日付を、Functionプロシージャを呼び出して和暦から西暦に直しています。
Day 関数で日付を引っ張りだすためです。
西暦でないと引っ張り出すことができません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Function Hi_Change(x) Hi_Change = Replace(x, ".", "/") Hi_Change = Replace(Hi_Change, "H31", "2019") Hi_Change = Replace(Hi_Change, "R1", "2019") Hi_Change = Replace(Hi_Change, "R2", "2020") Hi_Change = Replace(Hi_Change, "R3", "2021") Hi_Change = Replace(Hi_Change, "R4", "2022") Hi_Change = Replace(Hi_Change, "R5", "2023") Hi_Change = Replace(Hi_Change, "R6", "2024") Hi_Change = Replace(Hi_Change, "R7", "2025") Hi_Change = Replace(Hi_Change, "R8", "2026") Hi_Change = Replace(Hi_Change, "R9", "2027") Hi_Change = Replace(Hi_Change, "R10", "2028") End Function |
3、まとめ
JDL の年末調整システムから出力した CSVデータを Excel に取り込んだ後に、データの加工するマクロ(Excel VBA)を紹介しました。
Excel シート上でのデータの並び替えは Excel VBA の得意なところです。
手操作でやったらとてつもなく時間がかかることなので、自動化しましょう。
編集後記
今週は根詰めて決算対応していました。
新規の法人だと慣れないので、色々と確認するのが大変ですね。
月末まで頑張ります!!