明細のCSV

文字化けするCSVを家計簿に

ネットバンキングやカード会社のサイトでは、入出金明細をCSVでダウンロードできます。ところがExcelで開くと日本語が記号の列になったり、日付と金額が計算に使えなかったりします。

銀行のCSVの中身

CSVは表をそのままテキストにしたもので、1行が1件の取引です。共通の規格はなく、列の名前も並びも銀行ごとに違います。よく見るのは次の列です。

表の前に、口座番号や期間を書いた数行が付くファイルもあります(ゆうちょ銀行やビューカードなど)。新しい取引が先頭に来るファイルもあれば、古い順のファイルもあります。

文字化けの原因はShift-JIS

日本の銀行のCSVは、ほとんどがShift-JIS、正確にはWindowsで広げられたCP932で書かれています。UTF-8を前提にしたソフトで開くと、漢字もカナも意味のない記号に置き換わります。これが文字化けです。

円記号にも癖があります。Shift-JISでは“¥”とバックスラッシュが同じバイトなので、\7,000と書かれた金額は、別のソフトでは記号付きの文字列に見えます。

文字コードを指定して開き直せば、Excelでも日本語は読めるようになります。ただ、それで家計簿に使えるわけではありません。

そろっていない日付と金額

文字が読めても、書き方はファイルごとに違います。日付だけでも、実際の明細には次の形があります。

金額も同じです。△440 や ▲860 はマイナスの意味で、500円 のように後ろに円が付くもの、¥1,980 や \7,000 のように前に円記号が付くもの、全角の数字で書かれたものがあります。

表計算ソフトはこうした値を数字ではなく文字として扱うので、合計も月ごとの集計もできません。Excelで家計簿を付けていると、関数で一つずつ直す作業が毎月のように出てきます。

明細を家計簿に入れる方法

家計簿サービスの多くは口座連携で、銀行から明細を自動で取り寄せます。手間はかかりませんが、ネットバンキングのログイン情報や取引の履歴を、そのサービスに預けることになります。

Excelで自分で整える方法なら、データは手元に残ります。代わりに、上の文字化けと形式の違いを毎回片づける必要があります。

3つ目は、ダウンロードしたCSVを自分のMacの中で読み込むアプリです。ファイルはどこにも送られず、形式の違いはアプリが引き受けます。

Parendiでの読み込み

ParendiはMac用の家計簿・資産管理アプリで、日本の銀行とカード会社のCSVをそのまま読み込みます。Shift-JISかUTF-8かは自分で判別し、上に挙げた日付と金額の形式も読み取ります。ファイルは“読み込む”(⇧⌘I)で選ぶか、ウインドウにドロップします。

列は見出しの行から判別します。次の銀行とカード会社のファイルで確かめてあり、どれも“列の割り当て”なしでプレビューまで進みました。

ほかの銀行でも、見出しが似ていれば読めることはありますが、確かめてはいません。見出しの行がないファイル(一部のカードの明細)は“列の割り当て”が開き、列を一度だけ手で選びます。その割り当ては保存され、次から同じ形式に使われます。年のない日付(JAバンクの4月30日のような形)は、まだ読めません。読めなかったときは、エラーのダイアログの“マスクしたコピーを送信…”で、口座番号を伏せて金額を変えたコピーをサポートに送れます。

カードの明細は、プレビューで口座を“新しいカードの口座…”か既存のカードの口座にすると、利用額が支出として入ります。読み込んだ取引にはカテゴリが付き、Apple Intelligenceに対応したMacでは、日本語の内容からデバイス上で推定します。Apple Intelligenceがなくても読み込みはそのまま使え、推定がないだけです。同じ月をもう一度読み込んでも、口座ごとに照合して新しい取引だけを取り込みます。

ヨーロッパの口座ならcamt.053

スイスやドイツ、オーストリアの銀行では、明細をcamt.053というXMLで書き出せます。ISO 20022の規格で、口座のIBANと開始・終了の残高がファイルに入っています。Parendiはcamt.053も列の割り当てなしで読み込み、残高が取引と合わなければ知らせます。1日の途中の報告であるcamt.052と、個別の通知であるcamt.054は明細ではないので受け付けません。日本の銀行の明細はほとんどがCSVなので、日本の口座には上のCSVを使います。

どの形式でも、ファイルはMacから出ません。Parendiは銀行とつながっておらず、ログイン情報も知らず、どのサーバとも通信しません。Parendiについて詳しく、または対応ファイル形式の一覧をご覧ください。