VBAで作った売上データを会計ソフト「マネーフォワード」に取り込む方法
エクセルで売上データを手入力していて、毎月の経理作業に何時間もかかっていませんか?
「入力ミスが怖いから何度も確認している」「会計ソフトへのデータ取り込みが面倒で結局手入力している」という悩みを持っている方は、実はとても多いです。
私も独立当初は同じ悩みを抱えていました。
VBAを使えば、売上データの整形・集計・CSV出力まで自動化でき、そのデータをマネーフォワードにそのまま取り込むことが可能です。
この記事では、VBAで売上データを自動作成する方法と、そのデータをマネーフォワード クラウド会計へインポートするまでの手順を、プログラミング初心者でもわかるよう丁寧に解説します。
毎月の経理作業が「休憩時間にサクッとできる」レベルまで短縮できたら、本業にかける時間と集中力がグッと変わってきます。
最後まで読んでいただければ、今日から使える実践的なノウハウが身につくはずです。
手作業でエクセル経理をしている人が抱える3つの問題
VBAやマネーフォワードを導入する前に、まず「なぜ手作業の経理が非効率なのか」を整理しておきましょう。
問題の根本を知っておくことで、自動化の効果がよりリアルに実感できます。
問題①:売上データの入力と転記ミスが頻繁に起きる
売上明細を手で入力していると、どうしてもヒューマンエラーが発生します。
「数字の桁を1つ間違えた」「日付を前の月のまま入力していた」といったミスは、気づかないまま確定申告のデータに混入してしまうリスクがあります。
特に取引件数が月に20件・50件と増えてくると、入力作業そのものにかかる時間だけでなく、チェック作業にも同じくらいの時間がかかるようになります。
私が独立した直後も、エクセルへの売上入力とその確認作業で、毎月2〜3時間は平気で吹き飛んでいました。
問題②:会計ソフトへの転記が「二度手間」になっている
エクセルで売上データを作成したあと、さらに会計ソフトへ手入力で転記している方も多いのではないでしょうか。
「エクセルにも入力、会計ソフトにも入力」という二重入力は、作業時間が単純に2倍になるだけでなく、ミスの発生確率も2倍になります。
エクセルと会計ソフトを行き来しながら数字を見比べる作業は、想像以上に集中力を消耗します。
この「二度手間」の構造こそが、経理作業を必要以上に重労働にしている原因です。
問題③:月次の集計・仕訳作業に毎回時間がかかる
毎月末になると、「今月の売上合計はいくらか」「消費税はどう処理するか」「領収書と照合できているか」といった確認作業が一気に押し寄せてきます。
これらをすべて手作業でやっていると、月末・月初は経理だけで1日仕事になることも珍しくありません。
個人事業主や中小企業の経営者にとって、経理は必要不可欠な業務ですが、本来は「最小限の時間で済ませるべき管理業務」のはずです。
この問題を根本から解決するために、VBAとマネーフォワードを組み合わせた経理自動化の仕組みを作っていきましょう。
VBAで売上データを自動作成する方法
まずはエクセルVBAを使って、売上データを自動整形・集計する仕組みを作ります。
ここでは「日々の売上を入力するシート」と「月次集計シート」の2つを用意し、VBAで集計と整形を自動化するサンプルを紹介します。
VBAを使って売上データを作成することで、転記ミスをゼロに近づけることができます。
また、マネーフォワードが取り込める形式(CSV)に自動変換するところまでをVBAに任せることができます。
売上入力シートの準備
まず、エクセルで以下のような列構成の「売上入力シート」を作成します。
A列:取引日(例:2024/04/01)
B列:取引先名(例:〇〇株式会社)
C列:摘要(例:照明取替)
D列:売上金額(税抜き・例:100000)
E列:消費税率(例:10)
F列:消費税額(自動計算・例:10000)
G列:税込合計(自動計算・例:110000)
F列とG列はVBAで自動計算させるため、手入力は不要です。
こんな感じ
入力者はA〜E列だけを埋めれば、残りはVBAが処理してくれます。
売上データ集計VBAのサンプルコード
以下のVBAコードを「標準モジュール」に貼り付けてください。
Sub 売上データ整形()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim taxRate As Double
Dim taxAmount As Long
Dim totalAmount As Long
'売上入力シートを指定
Set ws = ThisWorkbook.Sheets("売上入力")
'最終行を取得(A列を基準)
lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
'2行目からデータ行までをループ処理
For i = 2 To lastRow
'消費税率を取得(E列に入力されている値を使用)
taxRate = ws.Cells(i, 5).Value / 100
'消費税額を計算してF列に入力(小数点以下は切り捨て)
taxAmount = Int(ws.Cells(i, 4).Value * taxRate)
ws.Cells(i, 6).Value = taxAmount
'税込合計をG列に入力
totalAmount = ws.Cells(i, 4).Value + taxAmount
ws.Cells(i, 7).Value = totalAmount
Next i
MsgBox "売上データの整形が完了しました!", vbInformation
End Sub
コードの動きを解説します。
まず Set ws = ThisWorkbook.Sheets(“売上入力") で、処理対象のシートを「売上入力」シートに指定しています。
次に lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row で、A列の一番下に入力されている行番号を自動で取得します。
データが増えても、このコードがある限り最終行まで自動で処理してくれるので、コードの修正は不要です。
For i = 2 To lastRow のループ処理で、2行目(見出し行の次)から最終行まで1行ずつ処理を繰り返します。
Int(ws.Cells(i, 4).Value * taxRate) は、売上金額に消費税率を掛け算して消費税額を計算しています。
Int() 関数で小数点以下を切り捨てることで、端数処理も自動で行われます。
最後に MsgBox で処理完了のメッセージが表示されます。
実行結果がこちら
VBAでCSVファイルを自動出力する方法
売上データが整形できたら、次はマネーフォワードに取り込むためのCSVファイルをVBAで自動出力します。
マネーフォワード クラウド会計では、CSVインポート機能を使って仕訳データを一括登録できます。
手動でCSV変換や名前を付けて保存する手間も、VBAで自動化できます。
マネーフォワード用CSVを自動出力するVBA
Sub マネーフォワード用CSV出力()
Dim ws As Worksheet
Dim outputPath As String
Dim fileNo As Integer
Dim lastRow As Long
Dim i As Long
Dim csvLine As String
'売上入力シートを指定
Set ws = ThisWorkbook.Sheets("売上入力")
'最終行を取得
lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
'出力先のファイルパスを設定(デスクトップに保存)
outputPath = Environ("USERPROFILE") & "\Desktop\売上データ_MF用.csv"
'新しいファイルを開く
fileNo = FreeFile
Open outputPath For Output As #fileNo
'ヘッダー行を書き込む(マネーフォワードの形式に合わせる)
Print #fileNo, "取引日,取引先,摘要,借方勘定科目,借方金額,貸方勘定科目,貸方金額"
'2行目からデータ行までをループ処理
For i = 2 To lastRow
'売上仕訳を1行ずつCSVに書き込む
'借方:売掛金(または普通預金)、貸方:売上高
csvLine = ws.Cells(i, 1).Value & "," & _
ws.Cells(i, 2).Value & "," & _
ws.Cells(i, 3).Value & "," & _
"売掛金" & "," & _
ws.Cells(i, 7).Value & "," & _
"売上高" & "," & _
ws.Cells(i, 7).Value
Print #fileNo, csvLine
Next i
'ファイルを閉じる
Close #fileNo
MsgBox "CSVの出力が完了しました!" & vbCrLf & outputPath, vbInformation
End Sub
コードの動きを解説します。
outputPath = Environ(“USERPROFILE") & “\Desktop\売上データ_MF用.csv" では、CSVファイルの保存先をデスクトップに指定しています。
Environ(“USERPROFILE") はWindowsの環境変数を読み取るコードで、ユーザー名が違うパソコンでもそのまま使えるのがポイントです。
Open outputPath For Output As #fileNo でCSVファイルを新規作成し、書き込みモードで開きます。
Print #fileNo, “取引日,取引先…" でヘッダー行を1行目に書き込みます。
ループ処理の中では、各行のデータをカンマ区切りで結合して csvLine という変数に格納し、それをCSVファイルに1行ずつ書き込んでいます。
処理が終わると Close #fileNo でファイルを閉じ、MsgBox で完了メッセージとファイルの保存場所を通知します。
このVBAを実行するだけで、デスクトップにマネーフォワード用のCSVファイルが自動生成されます。
実行結果がこちら
VBAで作ったCSVをマネーフォワードに取り込む手順
VBAでCSVファイルが完成したら、次はマネーフォワード クラウド会計にインポートします。
マネーフォワードのCSVインポート機能を使えば、手入力なしで仕訳データを一括登録できます。
取り込みの操作自体はとても簡単で、慣れれば2〜3分で完了します。
CSVインポートの基本手順
マネーフォワード クラウド会計にログイン後、以下の手順でCSVをインポートします。
ステップ1:「会計帳簿」→「仕訳帳」を開く
マネーフォワードのメニューから「会計帳簿」を選択し、「仕訳帳」を開きます。
ステップ2:「インポート」ボタンをクリック
画面右上にある「インポート」ボタンをクリックします。
ステップ3:CSVファイルを選択してアップロード
「ファイルを選択」からVBAで出力したCSVファイルを選んでアップロードします。
マネーフォワードが自動でCSVの列を認識し、プレビュー画面が表示されます。
ステップ4:列のマッピングを確認して取り込み実行
プレビュー画面で「取引日」「摘要」「金額」などの列がきちんと対応しているかを確認したら、「インポート実行」をクリックします。
これだけで、VBAで作成した売上データがマネーフォワードの仕訳帳に一括登録されます。
マネーフォワードのCSVフォーマットで注意すること
マネーフォワードのCSVインポートには、いくつかの決まったフォーマットがあります。
特に注意が必要なのは以下の3点です。
1つ目は、日付の形式は YYYY/MM/DD 形式(例:2024/04/01)で入力すること。
2つ目は、勘定科目名はマネーフォワード上に登録されている科目名と一致させること。
たとえばマネーフォワード上で「売掛金」ではなく「売掛金(法人)」と登録している場合、CSVの勘定科目も「売掛金(法人)」と書く必要があります。
3つ目は、金額欄にカンマや円マークが含まれているとエラーになってしまうこと。
VBAコードで数値をそのまま出力するように注意してください。
私がマネーフォワードを導入して経理が激変した話
VBAとマネーフォワードの組み合わせを紹介してきましたが、ここで少し私自身の体験談をお話しします。
私は2020年に10年勤めた会社を辞め、個人事業主として独立しました。
独立当初、経理の知識はゼロ。
仕訳の意味すら知らない状態からのスタートで、商工会議所の無料セミナーやYouTubeで勉強しながら、最初はエクセルで出納帳を作って仕訳をしていました。
エクセル経理時代の悩み
独立してすぐに始めたエクセル経理は、思った以上に時間がかかるものでした。
売上の入力、経費の入力、銀行口座との照合、消費税の計算……これらをすべて手作業でやっていた頃は、月末になるたびに「経理の時間を確保しなきゃ」とストレスを感じていました。
確定申告の時期になると、1年分のデータを見直して修正していたのでめちゃくちゃ大変でした。
この状態を解決しようとVBAで経理処理を自動化しようとしましたが、「VBAはデータ整形には強いけど、会計処理の複雑さをすべてカバーするのは難しい」という壁にぶつかってしまう。
さらに、VBAを作成するのにも時間がかかるので、本業よりも経理処理に時間がかかっていました。
マネーフォワードを導入してから経理が「別物」になった
周りの個人事業主や先輩経営者から勧められたのが会計ソフト「マネーフォワード」です。
導入してまず驚いたのが、銀行口座やクレジットカードの連携機能です。
登録した口座の入出金データが自動で取り込まれ、勘定科目を選ぶだけで仕訳が完了します。
以前は手入力していた銀行の入出金記録が、ほぼ自動で処理されるようになったのです。
売上の登録も、VBAで作ったCSVをインポートするだけで完結するようになり、確定申告のデータ集計もマネーフォワード上でボタン1つで出力できるようになりました。
今では経理作業を本業の合間の休憩時間に終わらせています。
以前の「月末の憂鬱な重労働」が、「ちょっとした確認作業」になった感覚です。
VBAとマネーフォワードの役割分担が最強
私が今実践しているのは、「エクセルVBAで売上データを整形してCSV出力→マネーフォワードにインポート」という流れです。
VBAは「データを整える・まとめる・出力する」という作業に非常に強い反面、「仕訳の自動認識」「銀行口座連携」「確定申告書類の自動作成」は苦手です。
一方、マネーフォワードはこれらの会計処理に特化して作られた専用ソフトなので、経理作業全体のクオリティと効率が格段に上がります。
VBAで「入り口」を整えて、マネーフォワードで「出口まで」自動処理する。
この役割分担こそが、経理作業を最小限の時間で終わらせる鍵だと実感しています。
マネーフォワードのここが便利|VBAだけでは難しい機能3選
マネーフォワード クラウド会計には、VBAだけでは実現が難しい便利な機能がたくさんあります。
個人事業主としての実体験をもとに、特に役に立っていると感じる機能を3つ紹介します。
便利機能①:銀行口座・クレジットカードの自動連携
マネーフォワードは、主要な銀行口座やクレジットカードと連携して、入出金データを自動で取り込む機能があります。
口座の明細を手入力する必要がなくなるため、これだけでも月に1〜2時間の節約になります。
経費の領収書を手入力していた方は特に、この機能の便利さに驚くはずです。
便利機能②:確定申告書類をワンクリックで出力
個人事業主にとって毎年の確定申告は大きな負担です。
マネーフォワードでは、1年間の取引データをもとに青色申告決算書や確定申告書を自動作成できます。
e-Tax(電子申告)との連携も対応しており、税務署に足を運ばなくても申告が完結します。
この機能のおかげで、以前は2〜3日かかっていた確定申告の準備が、半日以内で終わるようになりました。
便利機能③:請求書発行から入金管理まで一元管理
マネーフォワード クラウド会計では、請求書の作成・送付・入金確認まで一つの画面で管理できます。
「この請求書、入金されたかな?」と通帳を見ながら確認する作業が不要になります。
請求書を発行した瞬間から、対応する売上仕訳が自動で生成されるため、データの二重入力も発生しません。
VBAで売上データを管理していた頃と比較すると、この機能だけで経理のレベルが一段上がった感覚があります。
関連記事「個人事業主はマネーフォワードを使うべき理由」では、VBAでの経理処理からマネーフォワードに切替えた私の体験を紹介しています。
会計ソフトの導入を検討されている方は是非チェックしてみてください。
8. よくある質問(FAQ)
Q1:マネーフォワードはどのプランが個人事業主にお勧めですか?
個人事業主には「パーソナルプラン」がお勧めです。
一番安いパーソナルミニプランでも充分なのですが、「電子ファイル保存数」「レシートい撮影枚数」に上限があります。
事業拡大の将来性を考えると「パーソナルプラン」にしておくといいでしょう。
まず無料プランで機能を試してから、必要に応じてアップグレードするのがスムーズです。
→ → → 確定申告もお任せ【マネーフォワード クラウド】
Q2:VBAを使わなくても売上データをマネーフォワードに取り込めますか?
もちろん取り込めます。
マネーフォワードの「手動入力」機能を使えば、1件ずつ仕訳を登録することも可能です。
ただし、取引件数が多い場合は、VBAでCSVを自動生成してインポートする方が圧倒的に効率的だと思います。
月10件以上の売上取引がある方は、VBAとの組み合わせを検討してみてください。
Q3:VBAのコードをどこに貼り付ければいいですか?
エクセルを開いた状態で Alt + F11 キーを押すと、VBAエディター(Visual Basic for Applications)が起動します。
画面左側に「標準モジュール」という項目があるので、そこを右クリックして「挿入」→「モジュール」を選択し、開いた白い画面にコードを貼り付けてください。
まとめ|VBAとマネーフォワードで経理の悩みをゼロにしよう
手作業のエクセル経理が引き起こす「入力ミス」「二度手間」「月末の集中労働」という3つの問題は、VBAとマネーフォワードの組み合わせで根本から解決できます。
VBAでは売上データの整形・集計・CSV出力を自動化し、マネーフォワードでは会計処理・確定申告・請求書管理を一元化する。
この2つの役割分担を作ることで、経理作業を「月末の重労働」から「休憩時間にできる確認作業」へと劇的に変えることができます。
まだエクセルの手入力で経理をやっている方には、ぜひ今すぐ試してみてほしい組み合わせです。
もし「経理処理に合わせた複雑な処理を実装したい」「既存のマクロを改良したい」といったご要望がありましたら、マメBlogのエクセルマクロ開発依頼にご相談ください。
業務内容に合わせたオーダーメイドマクロを設定させていただきます。
最後まで読んでいただきありがとうございました。