TOPに戻る
鬱るんです
躁鬱病のITエンジニア「はまー」が心と体の模様を記した雑記帳。 大手IT企業で心身ともにぼろぼろになり退職した後、ほそぼそと働いたり事業を立ち上げようとして頓挫したり、作業所に通ったり障害者雇用で働いたりと紆余曲折したが、今は無職な毎日。

先月の日記

「Microsoft Moneyを使っていたが、サポートが終了するのでクレジット会社のサイトから明細を直接Moneyに取り込めなくなるらしく、困ったからExcelのVBAでCSVファイルからOFX形式に変換してMoneyに取り込めるようにした」

というようなことを書いた。おそらく検索エンジンからそのページにたどり着いた方から、そのマクロを提供してほしい、とのコメントがあったので、下記のページに載せてみた。同じように困っている人は、試してみてください。

クレジット会社や銀行からダウンロードしたCSV形式の明細データを、Excelのマクロを使用してMicrosoft Moneyに取り込む方法

ただし、お使いになる場合はあくまでも自己責任でお願いします。


コメント

  • やま 2011年2月5日 21:53

    ぐぐったら上記ページのマクロにたどり着きました.
    ofx形式のファイルがなかったので,中身を見ることができなかったのですが,試行錯誤で上手く動作しました.
    カスタマイズして今後も使わせていただきます.ありがとうございます.

  • 白浪 2011年2月17日 21:51

    素晴らしいマクロを公開していただき、誠にありがとうございます。
    三井住友Visaカードがサービスを停止してしまったため、Money に取込みする方法を模索しておりましたところ、こちらを拝見させていただきました。
    若干、カスタマイズして、取込みが無事行えました。
    下記は、既に解決済みですが、記載させていただきます。
    三井住友VisaカードのCSVで、取込みしましたが、
    iDを利用していると、CSV途中の行に、名義名と、iDのカード番号が記載されている行があり、そこの行でマクロがエラーを吐きます。
    (「型が一致しません」と出ます。)
    私は、CSV側を該当の行を削除することで対応させていただきましたので、何かのご参考になれば幸いです。

  • はまー 2011年2月18日 01:03

    白浪さま
    貴重な情報をお寄せいただき、誠にありがとうございます。
    もしこのブログを読んでいたなら、今後の改良のために、iDの行のフォーマットを教えていただけますでしょうか。
    通常は日付か金額が入力されているはずの列に、そうではない文字列が入力されているのでエラーになっていると思います。そこのiDの行を判別して、取り込み時には無視するようにし、エラーが出ないようにマクロを改変できると思います。
    よろしくお願いいたします。

  • 白浪 2011年2月18日 22:06

    はまーさま
    CSVの該当行を削除すれば、難を逃れますが、
    他にも、作成いただいたマクロを利用したい方がいると思います。応援させていただきます。
    私の利用しているiDは、クレジットカード一体型になります。
    該当行は、
    1列目 クレジットカード名義人
    2列目 クレジットカード番号(下3桁 *** にてマスク)
    3列目 SMBCCARDクラシック[一体型]
    …と記載されておりました。
    私自信は、デバッグモードで該当行を特定し、
    行削除させて頂きながら、取込みができましたが、
    そこまで至らず、諦めてしまう人もいるかと思います。もし、改変していただけるのであれば、ご参考になれば幸いです。

  • はまー 2011年2月20日 20:22

    白狼さま
    情報ありがとうございます。日付が入っているべき列に日付が入ってない場合、明細行ではないと判定してスキップするように改変いたしました。
    改変したマクロをアップしたので、お試しいただけると幸いです。

  • YT 2011年3月21日 15:06

    こんにちは。
    VBAの公開感謝します。
    三井住友VISA環境(家族会員あり、iDあり、PiTaPaあり)で
    利用させていただこうと試行しており、
    MSMoneyが1月末頃に自動で取り込んだ明細と比較してみました。
    家族会員明細もiD明細も相違なく取り込めていますが、
    PiTaPa(関西圏ポストペイの交通カード)の明細が
    漏れてしまうようです。
    CSV当該明細行は日付欄が空欄なため読み飛ばされるのですが、
    MSMoneyが自動で取り込んだときはこのカードの引き落とし日を
    適宜補完して処理していた様子。
    これをロジックに組み込むのは甚だ疑問なので、
    CSV側データ修正(つまり当該空欄部分に引き落とし日をセット)
    して利用することにしました。
    以上、ご報告まで。

  • はまー 2011年3月22日 00:50

    YTさま
    詳細なご報告、誠にありがとうございます。
    いろいろな例外があるものですね。
    PiTaPaの明細の日付欄が空欄とのことですが、確かにそれではその明細は取り込まれません。(それではMSMoneyはどこから日付を取得しているのか私にはわからないのですが)
    日付欄が空白のときには、摘要欄にPiTaPaと判別できる文字列があれば自動的に日付を補完する、という処理を追加することも可能です。しかし、おそらく他にも同様の例外(関東圏のPasmoやその他の電子マネーなど)があることが予想され、それら全てに対応するというのは困難です。
    この種の例外に関しては、YTさまの行ったようにCSVファイルを手動で修正してからMoneyに取り込んでいただくなど、運用面で回避していただきたいと思います。
    以上、よろしくお願いいたします。

  • YT 2011年3月22日 03:29

    はまーさま
    今となっては、OFXとCSVとのVISA明細比較ができませんので何とも言えませんが、MSMoneyが補完するというよりは、おそらくOFX作成時にきちんと日付データが埋め込まれていた、というのが正解なんでしょう。
    DTPOSTEDがない明細はさすがにエラーではじかれますものね。。
    ちなみにPiTaPa明細はこんな感じです。ご参考まで。
    (CSV先頭より)
    ■■ ■■ 様,9999-9999-9999-9***,VISAカード
    ***PiTaPaカードご利用明細***,,
    99************99 ■■ ■■ 様,,
    ,交通ご利用,4400,1,1,4400,2010年12月ご利用分
    ,交通ご利用割引,-440,1,1,-440,
    **PiTaPaカードご利用小計**,,3960
    (以下カード明細)

  • のんちゃん 2011年3月24日 20:42

    はまーさま
    お世話になります。
    すごく便利なソフトなので、早速使いたいと試してみましたが
    うまくデータを取り込めず悩んでおりました。
    ちなみにマネーは2002です。
    たまたま、ofxデータがあったので比較しますと
    データのところが、下記のようにタブ空白がないと
    取り込めないようです。
    Vbtabx6 TRNTYPE
    Vbtabx6 DTPOSTED
    Vbtabx6 TRNAMT
    Vbtabx6 FITID
    Vbtabx6 NAME
    まだプログラムは変更してませんが、バージョンの差なんでしょうかね?

  • はまー 2011年3月26日 00:32

    のんちゃんさま
    ご報告ありがとうございます。環境によっていろいろと不具合があるようですね。
    私の使用しているMoneyのバージョンはよくわからない(オンラインで買ったから箱もCD-ROMもない)のですが、起動時には「Microsoft Money Plus Edition」と出ます。
    データ部分にVbTab x 6 を挿入しても、自分のMoneyでは正しく取り込まれたので、プログラムを修正してみました。新しいマクロは既にアップしてあるので、こちらで試してみていただけますでしょうか。
    よろしくお願いします。

  • のんちゃん 2011年3月27日 20:23

    はまーさま
    早速ありがとうございます。
    アップされたVBAでもどうもうまくいかないのですが、
    FITIDなど書き換えると tabや空白がなくなってしまい、
    フォーマットがおかしくなるのが原因のようですが
    動作するOFXデータを送ったほうが わかりやすいようです。
    怪しいものでないので、もしよければアドレス書いときます。

  • のんちゃん 2011年3月27日 21:08

    すみません。書き方がまずかったようです。
    1)アップされたVBAでもどうもうまくいかないようです。
    2)取り込みが可能なOFXデータにNOTEPADで
    ハマーさんのソフトで生成したデータを一部書き換え、保存後は、インデントなどが変わって
    フォーマットがおかしくなり、取り込んでくれないようです。

  • 吉田和彦 2011年4月10日 23:05

    突然投稿させていただきます。
    マイクロソフトのマネーを利用しているものです。
    カードは、主にヨドバシカードを夫婦二人で別々に作りました。
    妻は、そのカードでスーパーマーッケトで買い物をしていたため、件数が毎月30~40件にのぼっておりました。
    個人的には、1月の終了は、相当不愉快でした。ヨドバシカードにクレームを言いましたが取り合ってくれません(お門違いだったからもしれませんが、情報・アドバイスが何もなかったような気がします)
    いろいろ、ソフトを探しましたが、適当なものがなく、しばらく記録をしないでいたのですが、たまる一方なため、再度ソフト検索したところ、貴殿の内容がヒットして、導入させていただきました。非常にありがたく、また、しばらく、マネーを使用できることに、ホッとしております。本当にありがとうございました。
    なお、二人分使用しているため、そのまま使用していると、一人のほうにすべて入って行くため、マクロ上に、言われた通り、クレジット会社名とクレジット番号を書き換えてうまくいきました。

  • のんちゃん 2011年4月24日 20:27

    はまーさんへ
    以前は対応ありがとうございました。
    いろいろ試してみたのですが、古いバージョンのmoneyでは
    うまく取り込めず、他の家計簿ソフトを購入しました。
    ただ、どうもmoneyのソフトが使い勝手がいいので
    悩んでいたところ、機能が制限された無償版をダウンロード
    できることをみつけ、moneyのバージョンアップが可能となり、
    はまーさんのVBAを活用して取り込みが可能となりました。
    助かりました。ありがとうございます。

  • hisashi 2011年5月24日 09:52

    はまーさん
    初めまして。便利に使わせていただいています。私はmoney2007,住友VISA,excell2003の組み合わせです。
    同じ日付で同じ費目,同じ金額の項目があると2件名後が弾かれる様です。私はETCの利用が多いのですが、同じ日に同じ路線を往復しても1回分しか取り込まれず、そこで気づきました。
    マクロ内では重複を検出して弾く様にはなっていない様に見受けられるのでmoney側の問題ではないか、とは思うのですが、一応参考まで。
    ちなみに、店名の後に連番をつけてあげれば誤魔化せるかな、と思ってTekiyouの後にiを付加してマクロを走らせてみましたが、残念ながらmoneyは同じデータを2度はとりこんでくれない様で、効果を確認できませんでした。次月にトライしてみます。

  • 2011年5月24日 11:49

    三井住友VISAカード Vpass が csv ファイルのフォーマットを変えてきましたよ。

  • はまー 2011年5月24日 20:16

    hisashiさま
    問題の件は、私も把握しておりましたが、Moneyの方で別々のデータとして認識してくれないので、これはMoneyの仕様だと思ってあきらめておりました。
    もし来月うまくいきましたら、結果のご報告をお願いできますでしょうか。
    よろしくお願いいたします。

  • はまー 2011年5月24日 20:19

    ま さま
    ご報告ありがとうございます。
    最近は三井住友カードを使っていないので、当方でファイルのフォーマットが確認できません。
    もしよければCSVのフォーマットを教えていただけますでしょうか。
    よろしくお願いいたします。

  • 2011年5月24日 21:40

    こんな感じです。現在と1ヶ月前の例です。
    2011/4/15,ウィルコム ご利用代金,ご本人,1回払い,,’11/06,987,987,,,,,
    2011/03/15,ウィルコム ご利用代金,987,1,1,987,

  • はまー 2011年5月24日 23:03

    ま さま
    ありがとうございます。おそらく3列目が利用金額のようですね。
    (その後のデータは、ドル建てなどで購入したした場合のレートとか外貨での表記だと思われます)
    プログラムの中で自動的にカードの種類を判別できないか調べたのですが、カード番号の先頭6桁にカード会社が振り分けられているものの、一意に特定できないので断念しました。
    (参考)クレジットカード番号 – ISAF 286th TFS
    フォーマットが異なると、そのままでは使用できないので、「三井住友VISAカードの場合の修正箇所」を明記して対応しました。

  • 2011年5月25日 08:58

    忘れていました。従来のcsvファイルの1行目のカード情報が無くなり、いきなりデータ行から始まります。
    その他の例も載せます。返品と割引の場合です。
    2011/4/11,ネオ・ウイング,ご本人,1回払い,,’11/06,-5890,返品,,,,,
    2011/5/15,年会費,ご本人,,,’11/06,656,131,-525,,,,

  • はまー 2011年5月25日 22:27

    ま さま
    再びの情報提供、ありがとうございます。
    先の例の新旧データを取り違えていたことに気づきました。
    7列目か8列目が利用金額のようですが、返品の場合と割引きの場合で、どちらの列の数字を取得すればいいか、変わってくるようですね。
    返品の場合は7列目「-5890」8列目「返品」となっているのに対し、
    割引きの場合は7列目「656」、8列目「131」、9列目「-525」となっているので、これは「656円から525円割引して、実際に支払うのは131円(つまり8列目)、ということですよね。
    どうやってプログラムで対応したらよいか、考えてみます。

  • 2011年5月26日 11:33

    追加で海外の利用の例です。前のもまとめて出します。
    2011/5/5,ZAZZLE.COM.JP,ご本人,1回払い,,’11/06,4889,,,4889.00,JPY,1.0000,05/06
    2011/4/15,ウィルコム ご利用代金,ご本人,1回払い,,’11/06,987,987,,,,,
    2011/4/11,ネオ・ウイング,ご本人,1回払い,,’11/06,-5890,返品,,,,,
    2011/5/15,年会費,ご本人,,,’11/06,656,131,-525,,,,

  • 2011年5月29日 22:58

    VBAダウンロードさせていただきました。
    すごく便利で助かっています。
    ちなみに
    自分はExcel2000を使っていましたが、
    最初うまく作動せず、
    最初の数行
    ‘Declare Function ShellExecute Lib “shell32.dll” Alias “ShellExecuteA” ( _
    ‘ ByVal hwnd As Long, _
    ‘ ByVal lpOperation As String, _
    ‘ ByVal lpFile As String, _
    ‘ ByVal lpParameters As String, _
    ‘ ByVal lpDirectory As String, _
    ‘ ByVal nShowCmd As Long _
    ‘) As Long
    ‘以上はモジュールの先頭に記述する必要があります。

    最後の数行
      ’Moneyアプリを起動
    ‘Dim rc As Long
    ‘rc = ShellExecute(0, “open”, OfxFileName, vbNullString, “”, 5) ‘5 : SW_SHOW ウィンドウを現在の位置とサイズで表示
    ‘※アプリを起動しないよう修正
    を動作させないようにしたらうまくいきました。
    あと、お忙しいところ申し訳ありませんが、
    銀行用のVBAも作っていただけないでしょうか。
    よろしくお願いします。

  • MJ 2011年9月11日 13:20

    うーーん、取り込みでエラーになります。三井住友VISAカードです。 取り込みが可能なみずほのOFXファイルと比較してみると、
    1)本マクロではタブが所々に挿入されている
     →「Indent & 」のところを全て削除しましたが取り込めず
    2)みずほのOFXファイルをメモ帳で開けると、改行されおらず、各情報の区切りに「↑」が入っている連続した文字列に見える。 エクセルで開くと、改行されて表示されるので、何らかの改行コードが「↑」で表示されているようだ
     → 手作業でみずほのOFXファイルから「↑」を本マクロが生成したOFXファイルにコピペして、メモ帳上では全く同じに見えるようにしてみたが、やっぱり取り込めず
    3)最終的に残った違いは、両者をエクセルで開いたときに、本マクロで生成されたOFXファイルだけ、一番最初の行が「・ソOFXHEADER:100」となり、メモ帳でいくら編集しても頭の「・ソ」が消えない
     →マクロに意図的に「Header = “”」を入れて初期化しても「・ソ」が消えず、今のところ取り込みに成功していない
    この「・ソ」は一体なんでしょうね? 

  • ななべ 2013年6月15日 10:28

    はじめまして。三菱UFJニコスでも2013年4月18日でofxでの配布が終了されました。
    (このコメントのURL欄にその告知URLを書いておきました)
    マクロを使わせていただき、無事Money Plus Editionで読み込めました。
    当方DCカードで、以下に変更したらできました。
    Const Begin = 14 ‘明細データが始まる行番号
    Const DateNum = 1 ‘日付が記載されている列番号
    Const TekiyouNum = 4 ‘適用(支払先)が記載されている列番号
    Const KingakuNum = 6 ‘利用金額が記載されている列番号
    「手で打ち込むのか・・・」ってゾッとしていたところ大変助かりました。有難うございました。

  • はまー 2013年6月17日 09:44

    ななべさま
    さっそく三菱UFJニコスカードの場合のプログラム修正点を追記いたしました。
    貴重な情報をお寄せ下さり、ありがとうございました。

コメントする

メールアドレスは公開されません

*は必須項目です