経理をするときに、ネット上にデータがあるのにクラウド会計でのデータ連携ができないケースもあります。その場合は、そのデータを活用しましょう。
今回はその事例として、MakeShopの売上データをExcelマクロで処理し、マネーフォワードにインポートする流れをまとめてみました。
MakeShopの売上データ
ネットショップを利用するメリットは、遠方であっても商品を売ることができること。
夜に売れてもいいわけです。
わたしはWordPressを使って、ネットショップをじぶんでつくっていますが、スキルはそれなりに必要です。つくるのに時間はかかりましたので。
WordPressでイチからオンラインストアをつくるには? WooCommerce+Stripeでの設定方法 | GO for IT 〜 税理士 植村 豪 Official Blog
フォームを利用して、メールで送るというやり方もあるでしょうが、ネットにあるサービスを利用するなら、ShopifyやBase、MakeShopといったところでしょうか。
今回の事例は、MakeShopというネットショップの例です。
MakeShop経由で買っていただいた場合、売上を立てるための経理が必要です。
クラウド会計を利用していれば、売上データを連携するという道もあるわけですが、MakeShopの売上についてはfreeeならデータ連携ができます。
いっぽうで、マネーフォワードクラウドだと連携ができません。(はず)
ただ、MakeShopからCSVファイルをダウンロードできるので、それをもとに集計したり、仕訳をすることは可能です。
ただ、データ数が多ければ、集計などの手間はそれなりにかかります。
そこで、データを加工し、インポートする流れをExcelでマクロでやってみました。
MakeShopの売上データを仕訳にする流れ
MakeShopの管理画面はこういった画面です。(お客さまに掲載許可いただきました。)
データ連携ができなくても、CSVファイルをダウンロードできるケースは多いです。それを使わない手はありません。
CSVファイルをダウンロードすると、こういったデータが表示されます。注文者の情報と商品の情報が同数ではないですし、個人別の購入明細は表示されるものの、金額は合計のみです。
ところどころに穴があって正直データとしては扱いにくいかと…。ただ、経理では合計金額があれば足ります。
ということで。この金額を売上の仕訳にする必要があります。
その処理をするのにExcelマクロを使います。
(金額を月で合計して手入力すればいいというのは、なしです。)
Excelマクロの設定について知りたい方は、こちらの記事にまとめています。
Excel VBA超入門 マクロを書いてみたい人集合! 仕事ときどきアウトプットがおすすめ | GO for IT 〜 税理士 植村 豪 Official Blog
MakeShopからダウンロードしたCSVファイルを開き、売上データをコピーして、
あらかじめ別に用意したExcelのシート「data」に貼り付けます。
隣のシート「import」に切り替えると、1行目に仕訳の見出しデータを設定したシートを用意しています。
ここでマクロを動かすと、金額が表示されているデータについて、売上仕訳を書き出していき、
すべて、データ処理が終わった時点で、
「import」というファイルが保存されます。
最後に、マネーフォワードの仕訳帳の画面から、インポートを選び、
保存したファイル選択し、
インポートすることができます。
2回目以降の処理を想定してマクロを書く
今回、こういったマクロを書いてみました。(キレイじゃないという声は受け付けません)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
Sub makeshop() Application.DisplayAlerts = False '■変数の宣言 Dim max_row As Long max_row = Worksheets("data").Range("F" & Rows.Count).End(xlUp).Row Dim i Dim q q = 2 '■前回仕訳データ削除 Worksheets("import").Rows("2:" & Rows.Count).Delete '■もし金額データがあれば売上仕訳する For i = 2 To max_row If Worksheets("data").Range("H" & i) > 0 Then Worksheets("import").Range("A" & q) = q - 1 Worksheets("import").Range("B" & q) = Worksheets("data").Range("A" & i) Worksheets("import").Range("C" & q) = "売掛金" Worksheets("import").Range("D" & q) = "MakeShop" Worksheets("import").Range("E" & q) = "対象外" Worksheets("import").Range("F" & q) = Worksheets("data").Range("H" & i) Worksheets("import").Range("G" & q) = "売上高" Worksheets("import").Range("H" & q) = "MakeShop" Worksheets("import").Range("i" & q) = "課税売上 10%" Worksheets("import").Range("j" & q) = Worksheets("data").Range("H" & i) Worksheets("import").Range("k" & q) = Worksheets("data").Range("B" & i) & " " & Worksheets("data").Range("E" & i) q = q + 1 End If Next '■D列の書式を「yyyy/mm/dd」に Columns("b").NumberFormatLocal = "yyyy/mm/dd" '■import.csvという名称で、ファイルを保存 ActiveWorkbook.SaveAs ThisWorkbook.Path & "\import.csv", FileFormat:=xlCSV ActiveWorkbook.Save ActiveWorkbook.Close Application.DisplayAlerts = True End Sub |
もし、シート「data」の金額欄の数字があれば、
売掛金/売上の仕訳を書き出してちょ、という記述です。(補助科目はありでもなしでも)
「q」という変数は2からスタートしています。これは1行目が見出しデータだからです。
さらに「q = q + 1」で「q」を2から3に変えています。これで仕訳を1行ずつずらして書いています。書き出されたデータに上書きすることがないようにです。
マクロを書くとき、効率化になることは前提ですが、実行したときにどう動くか。2回目処理をしたときにどう影響があるかを見極める必要があります。
たとえば、前回のデータより、今回のデータのほうが多ければ、前のデータは上書きされます。
いっぽうで、前回のデータより、今回のデータのほうが少なければ、前のデータはそのまま残ってしまいます。
結果として、そのままインポートすると2重仕訳というミスにつながります。
そのために、「■前回仕訳データ削除」のところで前回のデータをいったん消しています。
マクロで処理すれば、2秒ほどでファイル出力は完了します。
毎回やる1つ1つの処理をいかに減らすかということをかんがえたとき、マクロを始めとするプログラミングは選択肢の1つになります。
【編集後記】
昨日は税理士業をしたあとに、セミナースライドを作成しました。
【昨日の1日1新】
※「1日1新」→詳細はコチラ
まるご製パン&cafeの食パン