こたつねこの勉強部屋

独学の記録。

カウンター
にほんブログ村 資格ブログへ
にほんブログ村

銀行口座明細を会計ソフトに取り込める形式に変換するマクロを作成する。

 

ネット銀行は基本的に通帳はありませんが、その代わり口座の動きをいつでもウェブ上で確認できたり、明細を一括でCSVファイルとしてダウンロードできるという便利さがあります。CSVファイルならたいていの会計ソフトでインポートができますから、一行一行入力しなければならなかった通帳の転記がとても楽になります。

 

ところが、銀行の取引明細は「日付」「入出金」「残高」といった項目名でできているため、これを会計ソフトが読み込める「貸方」「借方」「勘定科目」といった項目名で再構成するのはちょっとした手間です。

以下が私が使っている楽天銀行の明細と「わくわく青色申告」という会計ソフトで読み込む際の形式の違いを比較した画像です。(数字はダミーです。)

 

 

 

f:id:koikoiplus:20170910200334p:plain

楽天銀行の明細 わずか3列です。  

f:id:koikoiplus:20170910200342p:plain

会計ソフトの読込形式 ずらっと42列もあります。


 

 

 

 

f:id:koikoiplus:20170910201423p:plain

拡大するとこんな感じ



 

振替伝票の場合、口座残高は記入しませんし、マイナスなんて記述もしません。動いた金額は貸方、借方の2か所に転記する必要があります。

 

この明細→会計ソフトに取り込める形式に変換するマクロを作りましたので公開しようと思います。3か月の勉強でここまでできるようになりました。

 

<ルール>

ややこしい帳簿ではないので、複合仕分けする必要はなく、一つの取引は1行で完結するとします。

 

この口座の場合、マイナスの帳簿(出金)は生活費である可能性が高いのでマイナスの記述が出たら勘定科目を事業主借に設定。プラスの場合は日付、明細の入出金先のメモ(どこから入金があったか簡易的に表示される場合がある)を 表示して勘定科目をメッセージボックスで入力する仕様にしました。

 

以下、マクロです。

 

Option Explicit

Sub Siwake()
Dim Mihon As Worksheet
Dim Siwake As Worksheet
Dim RB As Worksheet

Dim i As Long
Dim d As Long '伝票番号


Worksheets.Add
ActiveSheet.Name = "仕訳形式"
Set Siwake = ActiveSheet
Set RB = Worksheets(2)
Workbooks.Open Filename:="F:\CSV仕分け読み込み見本\RB-torihikimeisai 仕分け形式見本.csv"
'原本と同じフォルダ(USBの仕訳読み込み見本)に入れておく
Set Mihon = ActiveSheet
Siwake.Rows(1).Value = Mihon.Rows(1).Value '見出し行の転記


i = 2

Do While RB.Cells(i, 1) <> ""
Siwake.Cells(i, 2).Value = RB.Cells(i, 1)
i = i + 1
Loop
'取引日入力 この後iは常に入力した行+1の数になっている


d = 1

Do Until d = i - 1
Siwake.Cells(d + 1, 1).Value = d
d = d + 1
Loop
'伝票連番入力


d = 1
Do Until d = i - 1
Siwake.Cells(d + 1, 4).Value = "通常取引"
Siwake.Cells(d + 1, 5).Value = "振替"
Siwake.Cells(d + 1, 11).Value = 1
d = d + 1
Loop
'共通項目入力

d = 1
Do Until d = i - 1
Siwake.Cells(d + 1, 18).Value = RB.Cells(d + 1, 2).Value
Siwake.Cells(d + 1, 30).Value = RB.Cells(d + 1, 2).Value
d = d + 1
Loop
'金額を転記

d = 1
Do Until d = i - 1
If Siwake.Cells(d + 1, 18).Value < 0 Then
Siwake.Cells(d + 1, 25).Value = "普通預金"
Siwake.Cells(d + 1, 13).Value = "事業主貸"
Siwake.Cells(d + 1, 18).Value = Siwake.Cells(d + 1, 18).Value * -1
Siwake.Cells(d + 1, 30).Value = Siwake.Cells(d + 1, 30).Value * -1 'もしマイナス(出金)のときはほとんどが事業主貸なので仕訳を切る その後、-を+に直す
Else
Siwake.Cells(d + 1, 13).Value = "普通預金"
Siwake.Cells(d + 1, 25).Value = InputBox(Siwake.Cells(d + 1, 2) & "の日の普通預金入金に当たる勘定科目を入力してください。メモ内容は" & RB.Cells(d + 1, 4).Value) '入金のときは事業主借か売掛金の回収なのかが分からないので勘定科目入力を促す

End If
d = d + 1

Loop


End Sub

 

自身のレベルアップのため、軽く解説していきます。

 

 最初に楽天銀行の明細(CSV形式)を開いて置き、そこにこのマクロを書き込むとします。

 

Option Explicit →自分で作った変数がわからなくならないように変数宣言を強制しました。

Sub Siwake()→タイトル


Dim Mihon As Worksheet→「わくわく青色申告」に取り込めたワークシートを見本として用意します。そのシートを代入する変数です。
Dim Siwake As Worksheet→いまから楽天銀行の明細を会計ソフト形式に変換しながら転記する予定のシートです。
Dim RB As Worksheet→楽天銀行の明細のシートです。

Dim i As Long→カウンタとして使います
Dim d As Long '伝票番号→カウンタとして使います


Worksheets.Add→Siwakeとなるシートを挿入します。
ActiveSheet.Name = "仕訳形式"→挿入したシートに名前を付けます。
Set Siwake = ActiveSheet→挿入したシートを変数Siwakeに代入
Set RB = Worksheets(2)→Worksheet(2)はもともとマクロを記入している楽天銀行の明細です(Worksheet(1)はSiwake)。これをワークシート変数RBに代入。
Workbooks.Open Filename:="F:\CSV仕分け読み込み見本\RB-torihikimeisai 仕分け形式見本.csv"
'原本と同じフォルダ(USBの仕訳読み込み見本)に入れておく

→Mihonになるシートを開きます。ここではUSBに入っている「仕分け読み込み見本」というタイトルのファイルです。

Set Mihon = ActiveSheet

→開いた「仕分け読み込み見本」が現在のアクティブシートなので、これを利用してMihon変数に代入します。

 


Siwake.Rows(1).Value = Mihon.Rows(1).Value '見出し行の転記

→見本の1行目をこれから作るSiwakeのファイル1行目に転記します。

 


i = 2

Do While RB.Cells(i, 1) <> ""
Siwake.Cells(i, 2).Value = RB.Cells(i, 1)
i = i + 1
Loop
'取引日入力 この後iは常に入力した行+1の数になっている

楽天銀行の明細から仕分け形式ファイルの方に日付を転記します。i=2なのはタイトル行を飛ばしているから。楽天銀行の明細の日付列が空欄になったら止まります。ここでiの数をリセットしないことがポイント。iの数はこのループが終わった時点で入力すべき仕分け伝票の数に1を足したものになっているはずです(最後のi=i+1が空欄をカウントするものであるため)。

 


d = 1

Do Until d = i - 1
Siwake.Cells(d + 1, 1).Value = d
d = d + 1
Loop
'伝票連番入力

→もう一つのカウンタdを動かします。動かす回数はi-1回です(入力すべき仕分伝票の枚数)。伝票番号は連番ですので、最初の仕分けから1,2,3・・・と仕訳伝票の数だけ番号を入力していきます。

 


d = 1
Do Until d = i - 1
Siwake.Cells(d + 1, 4).Value = "通常取引"
Siwake.Cells(d + 1, 5).Value = "振替"
Siwake.Cells(d + 1, 11).Value = 1
d = d + 1
Loop
'共通項目入力

→dを初期化します(d=1)。どの仕訳伝票にも共通する項目を入力します。全部「取引種類=通常取引」、「伝票種類=振替」、「仕分連番=1」になります。繰り返す回数はやはり仕訳伝票の枚数であるi-1回です。

 

d = 1
Do Until d = i - 1
Siwake.Cells(d + 1, 18).Value = RB.Cells(d + 1, 2).Value
Siwake.Cells(d + 1, 30).Value = RB.Cells(d + 1, 2).Value
d = d + 1
Loop
'金額を転記

→d=1でdを初期化します。動いた金額を楽天銀行の明細から仕分け形式のシートに転記していきます。繰り返す回数は仕訳伝票の枚数であるi-1回。ここでは金額はマイナスならマイナスのまま転記されます。借方金額である18列と貸方金額である30列の両方に金額を転記します。

 

↓ここからがややこしいです。

d = 1
Do Until d = i - 1
If Siwake.Cells(d + 1, 18).Value < 0 Then
Siwake.Cells(d + 1, 25).Value = "普通預金"
Siwake.Cells(d + 1, 13).Value = "事業主貸"
Siwake.Cells(d + 1, 18).Value = Siwake.Cells(d + 1, 18).Value * -1
Siwake.Cells(d + 1, 30).Value = Siwake.Cells(d + 1, 30).Value * -1 'もしマイナス(出金)のときはほとんどが事業主貸なので仕訳を切る その後、-を+に直す

→コメントのとおり、もし、借方の金額がマイナスで転記されているならそれは出金であるので貸方勘定科目に普通預金が入力されなくてはいけません。これをIfステートメントで判定しています。また楽天銀行からの出金はほとんどが生活費であるため借方勘定科目には事業主貸を入力します。人によっては買掛金や仕入れが入るかもしれません。もし個別に勘定科目を切る必要があるなら空欄で構わないでしょう。その後、マイナスの表記を消すため、貸方、借方双方の金額に―1をかけて+の金額に直します。

 


Else
Siwake.Cells(d + 1, 13).Value = "普通預金"
Siwake.Cells(d + 1, 25).Value = InputBox(Siwake.Cells(d + 1, 2) & "の日の普通預金入金に当たる勘定科目を入力してください。メモ内容は" & RB.Cells(d + 1, 4).Value) '入金のときは事業主借か売掛金の回収なのかが分からないので勘定科目入力を促す
→もし金額がマイナスでないなら、それは普通預金への入金を意味しますので、借方勘定科目に普通預金と記入。なんで入金しているのかはわからないので、インプットボックスで貸方勘定科目は手動入力します。入力のヒントが欲しいので、仕訳伝票の日付と楽天銀行明細に記入されているメモ(画像にはないですが、本来は入金先が記入されています)を表示します。
End If

d = d + 1

Loop

→金額の+と-判定を仕分けの数(i-1回)繰り返して終了です。

 


End Sub

 

ちなみに「わくわく青色申告」はバージョンアップで追加料金を請求されるのが数年に一回で済むので結構お得な会計ソフトだと思います。余計な機能がついておらず、軽いのでスペック低いパソコンにもお勧めです。ホームページでのチュートリアルや初めて事業をする人に向けた帳簿のつけ方特集が親切。メールサポート・Faxサポートは無制限で無料。サポート料金が年単位でかかってくる他の会計ソフトと一線を画しています。聞くべき時は聞くけど分からないところは自分で調べられる独学派はこのソフトがお得だと思います。

 

にほんブログ村 資格ブログへ
にほんブログ村

↑お気に召したらどうぞクリックをお願いします。