Excelなどで作成したCSVデータを弥生会計に「振替伝票形式」でインポートする場合には「伝票以外の仕訳データ(いわゆる仕訳日記帳形式)」としてインポートする場合に比べて追加でデータを加工する必要があります。
具体的には「識別フラグ」と「取引タイプ」を変更する必要があるんですが、この作業をマクロで処理できないか考えてみました。
まずは弥生会計のインポートデータを準備する
今回はこんな感じのCSVデータを準備しました。

いわゆる仕訳日記帳形式でインポートする時のデータの形式になります。
なお、「消費税区分」や「部門」に関しては考慮していません。
このデータを振替伝票形式でインポートしていきます。
弥生会計に「振替伝票形式」でインポートするために「識別フラグ」を加工するマクロ
今回考えたマクロは下記のようになります↓
このマクロを実行するとすべての取引について「振替伝票形式」に変更されます。
一部を「振替伝票形式」で、一部を「仕訳日記帳形式」にすることはこのマクロではできません。
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 | Sub hurikae() '■CSVデータを弥生会計に振替伝票形式でインポートするためデータを変換するマクロ '■変数宣言 Dim lastrow As Long Dim i As Long '最終行の取得 lastrow = Cells(Rows.Count, 1). End (xlUp).Row '■A列の「識別フラグ」全体を2111にして「1行の伝票データ」に変換しておく。 Range(Range( "a1" ), Range( "a" & lastrow)).Value = 2111 '■T列の「取引タイプ」全体を3にして「振替伝票データ」タイプに変換しておく Range(Range( "t1" ), Range( "t" & lastrow)).Value = 3 '■複数行の伝票データに変換する処理(1行目のデータの処理) '■下のデータと同じ日付なら2110、下と違う日付なら2111 With Cells(1, 4) If .Value = .Offset(1, 0) Then .Offset(0, -3).Value = 2110 End If End With '■複数行の伝票データに変換する処理(2行目以降の処理) For i = 2 To lastrow With Cells(i, 4) '■上と同じ日付、下と同じ日付なら 2100 If .Value = .Offset(-1, 0) And .Value = .Offset(1, 0).Value Then .Offset(0, -3).Value = 2100 End If '■上と同じ日付、下と違う日付なら 2101 If .Value = .Offset(-1, 0) And .Value <> .Offset(1, 0).Value Then .Offset(0, -3).Value = 2101 End If '■上と違う日付、下と同じ日付なら 2110 If .Value <> .Offset(-1, 0) And .Value = .Offset(1, 0).Value Then .Offset(0, -3).Value = 2110 End If '■上と違う日付、下と違う日付なら 2111 ' If .Value <> .Offset(-1, 0) And .Value <> .Offset(1, 0).Value Then ' ' .Offset(0, -3).Value = 2111 ' ' End If End With Next i MsgBox "振替伝票形式にデータ変換完了" End Sub |
作っておいていまさらなんですが、ifステートメントではなくて、select caseステートメントで記述する方がスッキリ見やすくなるかもしれません。。。。
弥生会計に「振替伝票形式」でインポートするためのデータの条件
弥生会計に「振替伝票形式」でインポートする場合には「識別フラグ」と「取引タイプ」について下記のように設定をする必要があります。
以下弥生のHPからの引用、抜粋になります。


A列とT列に関してこの指示に従わないとインポートができないようなので、この指示にあうようにマクロを考えていけばいいということになります。
具体的には下記画像の黄色の箇所を変更すればいいわけです。

で、T列の「取引タイプ」については「3」と記載すればよいだけなのでそこまで難しくないように思います。
面倒なのがA列の「識別フラグ」の記載部分ですね。(なんでこんなややこしい感じのルールにしたんでしょうかね?)
弥生会計に「振替伝票形式」でインポートするために「識別フラグ」を加工するマクロの考え方
今回のマクロを作成するにあたって自分はD列の取引日付をベースしてA列の「識別フラグ」を加工していこうと考えました。
で、取引日付について、こんな感じで「規則性」というか「パターン」を設定して考えました。
「1行目のデータ」と「2行目以降のデータ」に分けて、それぞれ規則性・パターンを考えました。
「1行目のデータ」には2パターン、「2行目以降のデータ」には4パターンあります。
1行目のデータのパターン① 下の日付と同じ日付の場合
1行目のデータのパターンの1つ目は1行目のデータの日付が「下のデータ」の日付と同じ場合です。
例えば1行目のデータの日付が4月16日とするとこんな感じです。

この場合には1行目のデータの「識別フラグ」は「2110」にしないといけません。
1行目のデータのパターン② 下の日付と違う日付の場合
1行目のデータのパターンの2つ目は1行目のデータの日付が「下のデータ」の日付と違う場合です。
例えば1行目のデータの日付が4月16日とするとこんな感じです。

この場合には1行目のデータの「識別フラグ」は「2111」にしないといけません。
この部分をマクロで表現しているのがこの箇所になります↓

以上で1行目のデータの規則性・パターンは以上です。
次に2行目以降のデータの規則性・パターンに移ります。
2行目以降のデータのパターン① 上のデータと「同じ」日付、かつ下のデータと「同じ」日付
2行目のデータのパターンの1つ目は2行目のデータの日付が「上のデータの日付と同じで、かつ、下のデータの日付とも同じ日付」の場合です。
例えば2行目のデータの日付が4月16日とするとこんな感じです。

この場合には2行目のデータの「識別フラグ」は「2100」にしないといけません。
この部分をマクロで表現しているのがこの箇所になります↓

2行目以降のデータのパターン② 上のデータと「同じ」日付、かつ下のデータと「違う」日付
2行目のデータのパターンの2つ目は2行目のデータの日付が「上のデータの日付と同じだが、下のデータの日付とは違う日付」の場合です。
例えば2行目のデータの日付が4月16日とするとこんな感じです。

この場合には2行目のデータの「識別フラグ」は「2101」にしないといけません。
この部分をマクロで表現しているのがこの箇所になります↓

2行目以降のデータのパターン③ 上のデータと「違う」日付、かつ下のデータと「同じ」日付
2行目のデータのパターンの3つ目は2行目のデータの日付が「上のデータの日付と違うが、下のデータの日付とは同じ日付」の場合です。
例えば2行目のデータの日付が4月17日とするとこんな感じです。

この場合には2行目のデータの「識別フラグ」は「2110」にしないといけません。
この部分をマクロで表現しているのがこの箇所になります↓

パターン4 上のデータと「違う」日付、かつ下のデータと「違う」日付
2行目のデータのパターンの4つ目は2行目のデータの日付が「上のデータの日付と違うかつ、下のデータの日付とも違う日付」の場合です
例えば2行目のデータの日付が4月17日とするとこんな感じです。

この場合には2行目のデータの「識別フラグ」は「2111」にしないといけません。
この部分をマクロで表現しているのがこの箇所になります↓
今回の場合この部分の記述は必要ないです。一応記載していますが「’」を記載してコメントアウトしているのでマクロ実行の際には無視されます。

このマクロのイケてないところ。同じ日付の取引が全て1つの振替伝票になってしまう。
このマクロを使うことのデメリット、というかイケてないところ。というか、自分のスキルが不足しているところとして、同じ日付の取引すべてが1つの振替伝票になってしまう点があります。
例えば月末31日に給与の支払いと仕入代金の振込を行っているケースがあるとした場合、「給与の支払いの取引部分を独立させて1つの振替伝票にして、仕入代金の振込取引を同じく独立した別の振替伝票にする。」といったことはできません。(自分のスキルでは。)
例えば今回使用したデータの日付をすべて同じ日に変更してマクロを実行するとこんな感じになります↓

で、これを弥生会計にインポートするとこんな感じになります↓

こんな感じで、給与に関する取引と、税理士報酬に関する取引などを別々の振替伝票に分けることができません。
月末等に取引が大量に発生する日がそんなにない場合には1つの振替伝票になっても、
「まぁ問題ないか。。。。」と思いますが、
同じ日に大量に取引が発生する場合、振替伝票形式にしても結果として見にくい、俯瞰しにくいものになる可能性があります。
まとめ
個人的には弥生会計にインポートする場合には「振替伝票形式」でインポートすることはしません。
面倒臭いので。
ですが、振替伝票形式でインポートすることで給与等の複合仕訳や複数の取引を俯瞰することができ、わかりやすくなるメリットもあると思いますので、そのようなメリットを重視する方は今回の記事を参考にしていただければと思います。
【本日の近況報告】
やっと花粉症の症状が和らいできたようで、鼻詰まりなどが軽くなった気がします。
この時期は花粉症じゃない人が本当にうらやましく思います。
【本日の1曲】
The Selecter / London’s Burning
最初、曲のタイトル見たときはクラッシュのカバーか?と思ってあわてて聴いててみたら全然違いました。
selecterの名前は前から知ってたんですが、正直「on my radio」のボーカルの高い声があんまり好みじゃなかったんでそれ以外の曲は聴かず嫌いしてたところがあります。
あと、2TONEのスカは男性ボーカルだろっ!という偏見がありました。
が、この曲を聴いてその考えが変わりました。ベースがカッコいいですし、なんかボーカルの感じも変わっていい感じです。
曲の終わり際にパトカーのサイレンなんかも入っててこだわりを感じます。
クラッシュのカバーじゃないけどこれはこれでカッコいいです。