この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
全自動のクラウド会計ソフトfreee(フリー)で前期以前の仕訳を取り込むためのExcelファイルを作成するマクロについて記載いたします。
今回は、VBAの記述について記載いたします。
(前回までの記事)
関連記事 【Excelマクロ】会計ソフトで処理してある前期以前の仕訳をfreeeに取り込むExcelファイルを作成するマクロ(準備その①)
関連記事 【Excelマクロ】会計ソフトで処理してある前期以前の仕訳をfreeeに取り込むExcelファイルを作成するマクロ(準備その②)
関連記事 【Excelマクロ】会計ソフトで処理してある前期以前の仕訳をfreeeに取り込むExcelファイルを作成するマクロ(準備その③)
私が経理処理で使用するものを中心に記載しますので、基本的なVBAについての知識は、専門的なサイトで確認してください。
[aside type=”boader”](よくお世話になっているサイト)
LINK インストラクターのネタ帳
LINK Office TANAKA
LINK Office Pro
LINK Ex-it(ExcelとITで効率化して人生を楽しもう)[/aside]
目次 表示
概要
次のようなSheet構成でファイルを作成しました。
それぞれのSheetについては前回の記事(事前準備その③)を参照してください。
ファイル作成マクロの大まかな流れは次のとおりです。
[aside type=”boader”]① 変数の宣言
② 転送データSheetのデータクリアー
③ 仕訳帳Sheetから転送データSheetへデータへ転記
・ 日付、伝票番号の転記
・ 勘定科目、取引先、品目の転記
・ 税区分の転記
④ 転送データSheetをコピーしてcsv形式で保存[/aside]
変数の宣言
前々回の記事(準備その②)でも記載いたしましたも今回のファイル作成のための変数は次のように宣言してあります。一部、宣言したものの使っていない変数もあります。
変数の宣言は使用する直前というのが原則的なルールのようですが、私はHEAD部分にまとめて記述しています。特に理由はありません。
転送データシートのセルをクリアーする
勘定科目、補助科目、品目の設定漏れ等により、ファイル作成の処理を繰り返す可能性がありますので、転送データSheetのデータをクリアーするためのプログラムを記述しました。
① 転送データSheetの最終行の確認
下記は転送データSheetの一部ですが、データをクリアーするため、A列の最終行を確認をする記述をしました。
記述は次のとおりです。
上記のプログラムを実行すると、変数「lonYy」には、最終行の数値(上記の画像では「1193」)が代入されます。
② データクリアー
最初は、データがないかと思います。
転送データSheetには、freeeのテンプレートの見出し行を1行目に貼りつけてあります。セルを縮めて表示すると次のとおり
この1行目は削除しません(freeeにアップロードするときは、[表題行]として認識してくれますのでエラーになりません。)
このため、lonYyが「1」の場合は、見出し行を削除しないため、If構文を使って、クリアーする記述を実行しないようにします。
次に、MsgBoxでデータ削除の意思確認をして転送データシートのA2セルからN1193(「1193」は最終行)をクリアーします。
日付、伝票番号を転記
次に仕訳帳Sheetから転送データSheetに日付と伝票番号を転記ます。
① 日付データの転記
日付データの転送の注意点は、転送データSheetのB列(日付の列)の表示形式の分類を「日付」の設定にしてしまうと、csvファイルを作成したときに、年月日の並びが逆になってしまい、freeeでアップロードしてもエラーとなってしまいます。
上記のとおり、B2セルの表示形式が日付のまま、csvファイルに変換して保存するプログラムを実行すると、次のように保存されます。
B2セルが「12/31/2013」と月、日、年の順番に並んでしまいます。このデータをアップロードすると次のようなエラーが表示されます。
これを修正する方法はいくつかあると思いますが、私は、次のように記述したらうまくいきました。
まず、仕訳帳SheetのB列を選択し、文字列に置き換えます。
その後、仕訳帳Sheetの日付を文字列で取得して転送データSheetに転記している作業をDo~Loopで記述しました。
※ 私が前期以前に使用していた会計ソフトでは、仕訳帳をExcelデータとして抽出する際に、決算仕訳の日付を7桁の数値で表示する仕組みとなっていたため、決算仕訳の7桁の表示を10桁に変換する記述を加えました。
上記の記述を文字で記載すると次のようなプログラムになています。
[aside type=”boader”]・ 期末日(strGb)を取得
・ 日付(strGa)を取得
・ 文字列が7文字の場合は、期末日(strGb)を入力
・ 日付と同じ行のA列に「[明細行]」と入力する
・ 文字列が7文字以外の場合は、日付(strGa)を入力
・ 日付と同じ行のA列に「[明細行]」と入力する[/aside]
A列に「[明細行]」という言葉を記載しなければならないため、ここで記述しました。
② 伝票番号の転記
同じ伝票番号の仕訳は1つの振替伝票で処理することになるため仕訳帳Sheetの伝票番号をそのまま転記することになります。
(次回へ続く)
■□◆◇ 編集後記 ◇◆□■
このシリーズも4回目ですが、仕訳を全部取り込まなくても、1年分の試算表の貸借を振替伝票として取り込んでも、期首の科目残高に内訳(取引先又は品目)を設定するとう効果があることに気づきました。
「振替伝票1つにつき1つの取引先しか指定できない」という問題をクリアーできれば試算表から取り込む方法が簡単そうです。検証したらまた記事にしたいと思います。