Follow @RoyOsherove on Twitter

Hacking Microsoft Money to import my own bank's data + Fix for hidden money transactions

If you've never used Microsoft Money, you can simply move on to other posts..
One of the things I've done lately is try to use Microsoft-Money to manage my business and home finances. It's quite a lovely program, really, and I wish it had better support for banks here in Israel. In fact, that's one of the biggest gripes about it here, and one of the main reasons Israelis don't use it. It's mainly meant to be used for the US/EU crowd, it seems. The program is able to download and update data directly from your local bank, but no Israeli Banks are available to be used with it.
We work with the "Poalim" bank here in Israel, the largest in the county if I'm not mistaken. The bank has a very good and secure website which allows practically running 90% of your tasks online,including reviewing latest transactions on your checking and credit card accounts.
I tried to find a way for Money to download data directly from my own bank but Nada. Money does have the ability to import "QIF" files - "Quicken Interchangeable Format" files, which contain the latest movements from your bank. IN fact, it seems that these are the kind of files that US and UK banks provide to MS Money for download and update.
If only my bank, Poalim, supported creating QIF files. It doesn't.
So, I set out to create my own QIF imported from my bank account. It's very much a hack, but it works. Here's how:
  1. I go to my bank's main page where I can see my transaction list (after login)
  2. I Copy the table of transactions: I select the table with the mouse and press CTRL-C
  3. I open my own little software hack windows form and paste the text into it.
  4. Using regular expressions, I parse the text and create a small dataset from it with a row for each transaction
  5. I then write the context of the dataset into a temp QIF file
  6. The program also copies the file's full path into the windows clipboard
  7. I open MS Money and click File-Import-Download statement
  8. I "paste" the file path to the new QIF file and press OK
  9. Money imports the data from my bank into its records.
That's it. The whole process takes less than 30 seconds to perform, and now I can actually manage my accounts without manually entering all that data which my bank already has in store for me.
A few more things about my little hack:
  • My bank has listings for credit card transactions and Checking account transactions. Both have different tables and fields. My app knows how to recognize "pasting" from both of these tables and performs different parsing based on the pasted text form. That way I can import details credit card transactions by copy pasting just the same.
  • Money does not have an extensibility mechanism, so I couldn't write this as a Money Addin. Nor does it have any public declared automation interfaces which I could have used. Shame!
Fixing the problem of the vanishing imported transactions
Here's one important bit that I found out the hard way and that other people may be encountering with money, regardless of my little hack. It seems that money sometimes has a problem importing QIF files - the transactions seem to be listed as unread in the status bar, but they are hidden in the register, never to be found again.
More descriptions of this problem here and here. they don't have the answer I needed.
The problem in my case seemed to be that I had double-quotes inside my QIF file as the payee name like so:
<---Example of part of QIF file--->
PName of payee <--double quotes here screw things up in MS Money 2006
<---End example----->
Hope this helps someone!
One last annoying thing about Money
Speaking of Money, can anyone explain to me why, when I create a budget in Money, I can't include any categories and accounts related to business, only those related to "private" accounts? It sees weird that this is not possible, and is a feature I could really use, especially as someone who is an independent consults - where my income is tightly related to our household expenses anyway.

May at the Israel C# user group: Advanced Use of Delegates and Generics

Port 25: Microsoft Open Source Software Lab's "Channel 9"?