2021/11/19

GnuCashからエクスポートしたデータをMFF形式に変換する(後篇)

 ←前回の記事:GnuCashからエクスポートしたデータをMFF形式に変換する(前篇)

_今回は前回の続きで、GnuCashからエクスポートしたデータをExcelに読み込ませるところから始まります。

【2029/03/29追記】:この記事はGnuCashV4シリーズに対応しており、GnuCashV5シリーズでは、取引データをエクスポートした際のCSVファイルの形式が変更されています。詳しくは2024/03/29 GnuCashV5シリーズからエクスポートした取引データに対応したMFFマクロV2.54登場 を参照して下さい。

2.CSVファイルをExcelへ読み込む

_Excelを起動し、空のワークシート上でMFFマクロを動作させ、出現したダイアログで「GnuCashからエクスポートされたCSVファイル」を指定して、ワークシートに読み込ませます(ファイル名にGnuまたはGNUが含まれていることでGnuCash由来のファイルであると判定します)。このCSVファイルはUTF-8でエンコードされている(BOM無し、改行コードはCR+LF)ので、普通にExcelで開くと文字化けします。

MFFマクロでGnuCashからエクスポートしたcsvファイルを読み込む

_GnuCashからエクスポートした取引データは↓のようになっています。通常取引の場合は、2行で1つの取引を表しています。1行目だけに日付・取引ID・説明といった文字情報が入り、2行目以降は入りません。また、1行目が借方、2行目が貸方、という具合に決まっているわけではないようです。

_スプリット取引の場合は、1行目が親取引で、2行目以降に子取引が並びます。つまり、通常取引とスプリット取引のデータとしての本質は変わりません。GnuCashのデータは、一回の取引の結果として、通常取引であれば2つ、スプリット取引であれば3つ以上の勘定科目の残高の増減を表現しているわけです。

_このワークシート上でMFFマクロ(V2.27以降)を動作させると、スプリット取引をMFF形式に変換する際に必要になるダミー口座(「諸口」と呼ばれる)の名称を指定するダイアログが表示されます。ここでOKを叩くとデフォルトで"99諸口"という口座名が指定されます。

GnuCashからエクスポートした取引データをMFF形式に変換する

_データがMFF形式に変換されました↓。もともとスプリット取引であったデータは「99諸口」という口座を介した取引に変換されているのがお判りいただけると思います。当然ながら、このデータを他の家計簿アプリ向けに再変換するのであれば、当該の家計簿アプリ側にも「99諸口」という名称と口座を設定しなければなりません。この点にはくれぐれもご留意ありたく。

MFF形式変換後の取引データ

参考事項

_GnuCash側で【単純な配置】オプションを指定した場合にエクスポートされるCSVファイルの中身は↓のようになります。困ったことに、B列の「勘定科目名」でソートされているので、スプリット取引を構成する各行が一見バラバラに並びます(各行の色は、判りやすくするために筆者が付けたものです)。また、同じ日付で複数のスプリット取引が存在した場合は、スプリット取引の対応関係が特定できなくなるという問題点もあります。このような事情から、当Blogでは本形式には対応しないこととしました。

GnuCashの「単純な配置」オプションを指定してエクスポートしたデータの例

3.MFFマクロの変換処理はこうなっている

_GnuCashからエクスポートしたCSVファイルは16列もあり、他の家計簿アプリにデータを変換するにあたって邪魔になる「GnuCash特有の機能」に関するデータ列は真っ先に削除して変換処理を行っています。↓のチャートのグレーに塗ったデータ列がそれです。

_いわゆる「通常取引」の場合、前述のように2行で1つの取引データを構成しており、J列の「勘定科目フルネーム」に入っている文字列の最初の":"(コロン)より前の文字列により「勘定科目が口座名称なのか費目なのか」を判別して処理を分岐させています。2021/11/05 GnuCashの勘定科目を設定する で「勘定科目の部の名称を変えるな」と申し上げたのはこのためです。

_複式簿記を強く意識した家計簿アプリとしては、GnuCashの他にはPCソフト「がまぐち君」とAndroidアプリ「DARUMA家計簿」があり、両方共に、勘定科目に入っている文字列が「口座名」なのか「費目名」なのかを判別する必要性から口座名の設定について一定の制約を設けておりました。GnuCashにおいては勘定科目の部名を固定することで、口座名についての制約は発生しないようにしています。勘定科目の解釈以外には特に難しい処理はしていません。

GnuCash2MFF動作チャート(通常取引)

_一方、大いに苦労させられたのがスプリット取引の解釈です。当初は「諸口」にあたるダミー口座を使用せずになんとかMFF形式に変換することを試みました。しかし、これが何とも厄介でして、最終的には処理がシンプルになることからダミー口座を用いた現在の方式を採用しています。

GnuCash2MFF動作チャート(スプリット取引)

_↑のチャートでは、3,000円の買い物を現金1,090円とSuica1,910円の併用で支払った、という取引を例題としていますが、これは現金とSuicaからそれぞれダミー口座「99諸口」へ資金を振り替えたうえで「99諸口」から3,000円を支払うという記帳になります。振替取引には反対取引をでっちあげるというMFFマクロの仕様上、3行のデータが5行に膨らむという残念なことも起こるわけです。


次回は、GnuCashに対応したMFFマクロV2.25V2.27を公開する予定です→

注目の記事

家計簿アプリとデータをやりとりする際のファイル形式のまとめ

_今回の主題は…家計簿アプリとデータをやりとりするときに使用するファイルの形式について、です。筆者がこれまで MFFマクロ に対応させてきた家計簿アプリは27種類(Money通帳とあっと家計簿は別カウント)。まず、家計簿アプリからエクスポートする方向では↓のようになります。...

最近の人気トップ3