見出し画像

【脱属人化】弥生会計の自動化(vbaでエクセルデータから自動仕訳入力)

エクセルで事務を楽にするプログラマーmoimoiです。

今回から弥生会計を自動化するシリーズを書いていきたいと思います。

どの処理を自動化するかというと、仕訳入力から資料の出力までの業務です。

以前にも弥生会計の仕訳をインポートするためのエクセルの作り方に関してご紹介した事があります。

詳細はこちらをご覧ください。
有料記事となっていますが、自動化する方法は無料で閲覧可能です。

実際のツールを作るのが手間な方は購入頂ければ、そのまま使えるツールのダウンロードができる様になっています。

今回はこの記事の続編とも言える内容をご紹介していきたいと思います。

以前、ご紹介したツールはエクセルに記載してボタンを押すと弥生のインポート形式のテキストが出力されるツールでした。

今回はこのエクセルに記載するという作業自体を自動化していくことで、
いつもお使いのエクセルから自動で仕訳をインポートできるテキストを出力できるツールが出来上がります。

仕訳っていつも慣れた方が資料を見て作成できれば良いですが、毎月必ず出来ないことも出てくるかもしれません。そんな時新人さんにその仕事が託せたら、、、

また、慣れた方でも毎月1時間以上エクセルから転記してるのであれば、自動化しておくことで入力が一瞬でできてしまいます。

そんなことが出来たらとても素敵ではないでしょうか?


【仕訳作成の手順】

*準備するもの

1.仕訳の元となる金額が載っているエクセル

2.前回紹介した弥生仕訳出力.xlsm

 今回は1に関して、ScanSnapというスキャナーでレシートをスキャンしたcsv形式のデータを使って説明していきたいと思います。

同じものをお使いの場合は下記に記載のコードを使用することで、

 こちらのエクセルの準備の仕方も今後のnoteでご紹介していきたいと思います。
 気になる方は今後こちらのマガジンに登録予定ですのでフォロー頂けると通知が取得できます。

*作成方法

1.仕訳のもととなるデータの中に仕訳入力に必要なデータ(日付、お店、金額、支払い方法)がどこに入っているか確認

今回は下記の通り
日付:F列 Cells(i,6)
金額:H列 Cells(i,8)
お店:A列 Cells(i,1)
支払い方法:J列 Cells(i,10)

2.下記仕訳用のコードのテンプレートをもとにコードを作成

これで、以前作ったツールと合わせると、エクセルの情報が仕訳のインポート形式で出力される様になります。

 借方は細かく指定をしてもいいですが、今回は未確定勘定で処理をする様にしています。
 現金の時、カードの時で貸方の科目を変更する様にしています。

【コード】

*基本のコード

Worksheets("○○").Cells.Clear
    
    For i = 1 To ○○
   日付 = Cells(i,6)’数字の部分の数字を変更すると、別のエクセルでも扱えます。6=F
   金額 = Cells(i,8)’数字の部分の数字を変更すると、別のエクセルでも扱えます。8=H
    摘要 = Cells(i,1)’数字の部分の数字を変更すると、別のエクセルでも扱えます。1=A
    貸方勘定科目 = Cells(i,10)’数字の部分の数字を変更すると、別のエクセルでも扱えます。10=J
     with Worksheets("○○")
            .Cells(i, 1) = "2000"                             '識別フラグ(必須)
            .Cells(i, 4) = 日付                               '日付(必須)
            .Cells(i, 5) = 借方勘定科目                         '借方勘定科目(必須)
            .Cells(i, 6) = 借方補助                             '補助科目
            .Cells(i, 7) = 借方部門                            '借方部門
            .Cells(i, 8) = 借方税区分                           '借方税区分(必須)
            .Cells(i, 9) = 金額                                '借方金額(必須)
            .Cells(i, 10) = 借方税額                            '借方税額(必須)
            .Cells(i, 11) = 貸方勘定科目                        '貸方勘定科目(必須)
            .Cells(i, 12) = 貸方補助                            '補助科目
            .Cells(i, 13) = 貸方部門                            '貸方部門
            .Cells(i, 14) = 貸方税区分                          '貸方税区分(必須)
            .Cells(i, 15) = 貸方金額                            '貸方金額(必須)
            .Cells(i, 16) = 貸方税額                            '貸方税額(必須)
            .Cells(i, 17) =摘要                              '摘要
            .Cells(i, 20) = 0                                  '仕訳種別(単独仕訳0、複合仕訳3)(必須)
            .Cells(i, 25) = "no"                               '調整(必須)
    Next i

3行目の日付のところから別の値を入れるように指定すれば、スキャンスナップで用意したエクセルでなくとも対応可能です。

以前ご紹介していた一括処理のコードも利用すると、同じフォルダに入れてボタンを押すだけで、仕訳を出力できます。

*フォルダ内一括処理後のコード

Sub 仕訳()

Dim Path As String
Dim FName As String
Dim buf, sOld, sNew, inputpath As String
Dim wb As Workbook
Set wb = ThisWorkbook
inputpath = Application.ThisWorkbook.Path & "\"
buf = Dir(inputpath & "*.csv")


'2行目以降を消去
Worksheets("仕訳").Rows("2:" & Cells.Rows.Count).Delete

Do While buf <> ""
Workbooks.Open inputpath & buf

'フォルダ内のエクセルを開いているうちにやりたいことを記載
    
    For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
    日付 = Cells(i, 6)
    金額 = Cells(i, 8)
    摘要 = Cells(i, 1)
    借方勘定科目 = "未確定勘定"
    貸方勘定科目 = Cells(i, 10)
    税区分 = "対象外"
    税額 = 0

     With wb.Worksheets("仕訳")
            .Cells(i, 1) = "2000"                             '識別フラグ(必須)
            .Cells(i, 4) = 日付                               '日付(必須)
            .Cells(i, 5) = 借方勘定科目                       '借方勘定科目(必須)
'            .Cells(i, 6) = 借方補助                          '補助科目
'            .Cells(i, 7) = 借方部門                          '借方部門
            .Cells(i, 8) = 税区分                             '借方税区分(必須)
            .Cells(i, 9) = 金額                               '借方金額(必須)
            .Cells(i, 10) = 税額                              '借方税額(必須)
            .Cells(i, 11) = 貸方勘定科目                      '貸方勘定科目(必須)
'            .Cells(i, 12) = 貸方補助                         '補助科目
'            .Cells(i, 13) = 貸方部門                         '貸方部門
            .Cells(i, 14) = 税区分                            '貸方税区分(必須)
            .Cells(i, 15) = 金額                              '貸方金額(必須)
            .Cells(i, 16) = 税額                              '貸方税額(必須)
            .Cells(i, 17) = 摘要                              '摘要
            .Cells(i, 20) = 0                                 '仕訳種別(単独仕訳0、複合仕訳3)(必須)
            .Cells(i, 25) = "no"                              '調整(必須)
    End With
    Next i

ActiveWorkbook.Close SaveChanges:=False  '保存するならTrueに変更

Application.ScreenUpdating = False
Application.DisplayAlerts = False

Worksheets("仕訳").Activate
ThisWorkbook.Worksheets("仕訳").Copy after:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Activate
Worksheets(Worksheets.Count).Rows(1).Delete
Columns("D:D").Select
Selection.NumberFormatLocal = "yyyy/m/d;@"
ThisWorkbook.Worksheets(Worksheets.Count).Copy
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & "仕訳データ.txt", FileFormat:=xlCSV
wb.Worksheets("仕訳 (2)").Delete
ActiveWorkbook.Close SaveChanges:=True
Worksheets("使い方").Activate

Application.DisplayAlerts = True
Application.ScreenUpdating = True

buf = Dir()
Loop
MsgBox "仕訳データを作成しました。"
End Sub

日本語の変数はエラーになっていませんが、できれば宣言していたほうがいいかもしれません。

【使い方】

1.ツールと同じフォルダにScanSnap形式のエクセル(csv)を入れます。
※他のエクセルはフォルダに入れないで下さい。

2.ツールを開いて仕訳作成ボタンを押す

3.同じフォルダに仕訳データのテキストが保存されます。

4.弥生会計の仕訳日記帳にインポート
弥生会計の画面に従って行ってください。

5.仕訳の適要やレシートを見て勘定科目を設定

【アレンジ編】

1.借方勘定科目をお店で条件分岐して勘定科目を指定

2.MFクラウド会計での自動化についてはこちら

【ダウンロード】

 今回もコードを書くのが面倒だったり、分からない方のためにそのまま使えるテンプレートのダウンロード画面をつけています。
 ScanSnap形式のエクセルがある場合、ボタン一つで弥生会計にインポート可能です。

ここから先は

0字 / 1ファイル

¥ 1,000

この記事が参加している募集

スキしてみて

よろしければ、サポートお願いします! 頂いたサポートは、noteの運営費や新たなコード作成の開発費に充てさせていただきます。