以前、弥生会計のCSVインポート機能を使用してインターネットバンキングのデータとかを取り込む際に指定した摘要がある仕訳データの下に新規の仕訳を1行追加挿入するマクロを記事にしました。
今回はそちらの方法を少し焼き直して、建設大臣NXの「データ受入機能」を使用してCSVデータをインポートする際に指定した仕訳データの下に新規データを追加するマクロを考えましたので記事にしておきます。
建設大臣NXのCSVインポート方法について
今回の記事の大前提である建設大臣NXにCSVデータをインポートする方法に関しては過去記事がありますのでそちらを参考にしていだければと思います。
この記事で紹介した方法によるCSVデータのインポート方法をベースにして今回の「指定した摘要の下に新規の行を追加」していきます。
指定した摘要がある仕訳データの下に新規の仕訳を1行追加するマクロ
今回のマクロは下記のようなものです。
弥生会計の時に作ったマクロのうち、配列のデータ数を変更して建設大臣用にしています。
Sub kensetu_add2()
'■【マクロの説明】
'建設大臣のインポート用データで摘要欄から指定したキーワードを検索して空白行を追加し、
'仕訳を1行追加挿入するマクロ
'■変数宣言
Dim targetrng As Range
Dim startrng As Range
Dim endrng As Range
Dim targetrow As Long
Dim findword As String
findword = "※※※" 'ここに検索するキーワードを入力する。
'■変数宣言(配列)
Dim data_add(43) As Variant
'■処理実行部分
Set targetrng = Range("ar:ar").Find(what:=findword, lookat:=xlWhole)
If targetrng Is Nothing Then
MsgBox "『" & findword & "』という摘要はありませんでしたので終了します。", vbInformation
Exit Sub
Else
Set startrng = targetrng
targetrow = targetrng.Row '摘要が見つかった「行」の番号を変数に格納する
'■新規行の追加
targetrng.EntireRow.Offset(1, 0).Insert
targetrng.EntireRow.Offset(1, 0).Interior.ColorIndex = 4
'■1行目の追加する仕訳の項目を設定して配列data_addに格納する。
data_add(0) = targetrng.Offset(0, -43).Value '年
data_add(1) = targetrng.Offset(0, -42).Value '月
data_add(2) = targetrng.Offset(0, -41).Value '日
data_add(3) = targetrng.Offset(0, -40).Value '伝票NO
data_add(8) = 333 '借方コード
data_add(10) = "他勘定科目振替" '借方科目名
data_add(13) = 0 '借方税区分
data_add(16) = 1280 '借方金額
data_add(21) = 999 '貸方コード
data_add(23) = "諸口" '貸方科目名
data_add(26) = 0 '貸方税区分
data_add(29) = data_add(16) '貸方金額
data_add(43) = "仕訳を1行追加しました" '摘要
'■仕訳の追加
Range("a" & targetrow, "ar" & targetrow).Offset(1, 0).Value = data_add
End If
'■作業の繰り返し
Do
Set targetrng = Range("ar:ar").FindNext(targetrng)
If targetrng.Address = startrng.Address Then
Exit Do
Else
targetrow = targetrng.Row '摘要が見つかった「行」の番号を変数に格納する
'■新規行の追加
targetrng.EntireRow.Offset(1, 0).Insert
targetrng.EntireRow.Offset(1, 0).Interior.ColorIndex = 4
'■1行目の追加する仕訳の日付を再取得して配列data_addに格納する。
data_add(2) = targetrng.Offset(0, -41).Value '日付
'■2行目の追加する仕訳の日付を再取得して配列data_addに格納する。
data_add(2) = data_add(2) '日付
'■仕訳の追加
Range("a" & targetrow, "ar" & targetrow).Offset(1, 0).Value = data_add
End If
Loop
MsgBox "『" & findword & "』仕訳の追加作業が完了しました。", vbInformation
End Sub
マクロの使い方と注意点
検索するキーワードの入力
上のマクロのハイライト行の部分(※※※となっている部分)に検索したい摘要を入力してマクロを実行します。
試しに※※※を削除してマクロを実行してみます。
摘要に「掛金 中退共」と記載されたデータの下に仕訳行を1行追加したい場合を考えます。
元のデータはこんな感じになっているとします↓
この状態でマクロの※※※を削除して「掛金 中退共」としてマクロを実行してみるとこんな感じになります↓
仕訳行が追加されています↓
配列の宣言について
配列の宣言について少し説明をしておきます。この部分に関してです↓
今回配列の要素数を43(44)にしているのは建設大臣のCSVインポートの項目数が下記のようになっているからです。
で、A列からAR列までセルの個数が全部で44個あります。なので、今回配列の宣言時に「data_add(43)」としています。
配列のデータの訂正
配列のデータに関して、追加したい仕訳に合わせて、勘定科目コードや消費税区分、金額、摘要などのデータを訂正、追加が必要です。
この部分です。
摘要欄に検索ワードと同じ摘要を記載するとこのマクロはバグが発生してしまいますので絶対にしないでください。
この例の場合、data_add(43)=””の箇所にdata_add(43)=”掛金 中退共”と記載するとマクロが無限に繰り返されてしまいますので気を付けてください。どうしても同じ摘要にしたい場合は摘要欄の最後に空白スペースを入力しておくなどして対処しましょう。
まとめ
建設大臣NXのデータ受入れ機能を使用してCSVデータをインポートする際に指定した摘要がある仕訳データの下に新規仕訳を1行追加するマクロを具体的に記事にしました。
一度作ったマクロを少し手直しすることで別の処理に流用することができるのがマクロの魅力でもあります。
なお、同様の処理を弥生会計で行う場合の具体的方法もありますので興味があるかたはこちらをご覧ください↓
【本日の近況報告】
女子バスケットボールのプレーオフシーズンをSPOTVNOWというアプリで視聴。
応援しているシャンソン化粧品がベスト4まで勝ち残っています。
【本日の1曲】
Men Of North Country/I’m Com’un Home (In the Morn’un)
Men Of North Countryというバンドのモッドでジャジーでブルージーな1曲。イスラエルのバンドらしいです。声がポールウェラーに似ているような気がします。
オーシャンカラーシーンとかポールウェラー好きならきっと好きになるはず。