販売王とのデータ連携VBA インボイス3点伝票日付版

invoice3tenhanbaioueyecatch

日常、販売管理ソフトを利用している場合、そのデータ出力機能で、インボイス見積納品請求伝票日付版に販売データの転記が出来ます。
ソリマチ販売王用で転記のVBAを作成します。

こんにちは、じゅんぱ店長(@junpa33)です。

ここでの記事内容は、対象となる方は限定されます。

対象者は、「ソリマチ販売王」を業務で利用している方ということになります。

日々の商品販売で使用している販売管理ソフトに、入力されている売上データをエクスポートして、この「インボイス見積納品請求伝票日付版」にデータ導入します。

対象の販売管理ソフトは「ソリマチ販売王」です。

3点伝票作成用に再び販売データを入力するのは、普通に考えて ” 無駄な手間 ” です。

この操作が出来る事だけで、大変な効率アップにつながります。

インボイス見積納品請求3点伝票作成の記事編成

ソリマチ販売王とデータ連携する作業手順

invoice3tenhanbaioup002

ソリマチ販売王にある販売データをこの「インボイス見積納品請求伝票日付版」に導入するには以下の手順で行います。

①ソリマチ販売王の販売データをエクスポートする

  1. 販売王メニュータブ「ツール」の「テキストデータ出力」で、抽出する対象期間で「売上伝票」を出力する。
  2. 保存先フォルダは、「インボイス見積納品請求伝票日付版」に付属の「販売ソフト」フォルダに保存してください。出力ファイル名は適宜。自分が分かりやすいものでOKです。ファイル形式はCSVテキストです。

特に問題はないかと思いますが、不明な部分はソリマチ販売王の使用マニュアルを参考にしてください。

②インボイス見積納品請求伝票日付版へのデータ導入

出力されたデータファイルを「インボイス見積納品請求伝票日付版」に「導入しますが、前提となる作業を完了しておく必要があります。

  1. 「宛名の登録」シートに作成する帳票の相手先(発行先)を登録しておく必要があります。
  2. 顧客番号については、ソリマチ販売王の「得意先」番号に合わしておく必要があります。
  1. ユーザーフォーム「操作パネル」の「顧客番号」に帳票を作成するソリマチの「得意先番号」を入力します。
  2. 「ソリマチ販売王連携」チェックボックスにチェックをします。
  3. 「データ連携」コマンドボタンをクリックします。
  4. 販売王からの売上データの中から指定した「得意先番号」のデータだけ抽出され、「外税計算」シートに出力されます。

ここまでの①と②の作業が、ソリマチ販売王連携の時に行う追加作業となります。

③インボイス見積納品請求伝票日付版での売上データ最適化

「外税計算」シートに出力された売上データは、自由に加工することが出来ます。

他からデータをコピペで追加したり、不要な部分を削除したりできます。これらはすべてマニュアル(手作業)で行ってください。

一通りの調整、修正が完了したら、

  1. 「通番」ボタンで番号を引き直しをします。
  2. 「内税チェック」ボタンでチェックボックスをセットします。
  3. 「8%内税チェック」ボタンでチェックボックスをセットします。

帳票を作成する金額計算はすべて税別計算になります。

内税で計算された売上データが混入している場合は、「内税チェック」をマーク(10%と8%)し、軽減税率適用分についてはさらに「8%内税チェック」にマークします。

すべて税別計算されている場合はマーク無しで大丈夫です。

チェックが完了したあと、

「税別化転送」ボタンをクリックします。

最適化された売上データが「作業シート」に転送されます。

④「見積書」「納品書」「請求書」伝票の完成

「作業シート」に移された売上データは、他のケース同様、

  1. 通番を確認して
  2. 非課税商品をチェックして
  3. 軽減税率商品をチェックして

ユーザーフォームの「帳票作成」ボタンをクリックして伝票の作成を行います。

販売王の出力データの指定からデータ導入するVBA

invoice3tenhanbaioup003

先の①と②の部分を行うVBAは以下のようになります。

保存フォルダから導入ファイルを指定する

「データを開く」プロシージャー

保存フォルダからファイルを指定するのは、いつものパターンの「ファイルダイアログからの指定方法」で行います。

この「データを開く」プロシージャーは部品として、「データ転記」プロシージャー内で呼び出します。

データを開く操作がキャンセルされた場合、この「データを開く」プロシージャーは閉じられ、親プロシージャー「データ転記」に戻りますが、親プロシージャーはそのまま走ってしまいます。

なので、「データを開く」が閉じられた場合、親の「データ転記」プロシージャーも閉じるように仕掛けをしておきます。

「データを開く」で変数「Canc」に1が代入されたときに「データ転記」の条件分岐でメッセージを表示して終了するようにします。

VBA
Option Explicit
Dim Canc As Long

Sub データを開く()
    Dim FD As FileDialog, f As Variant
    Canc = 0
        Set FD = Application.FileDialog(msoFileDialogOpen)
        With FD
            .ButtonName = "開く"
                With .Filters
                        .Clear
                        .Add "テキストファイル", "*.txt; *.csv", 1
                        .Add "Excelブック" _
                                    , "*.xls; *.xlsx; *.xlsm", 2
                End With
'表示するフォルダを指定します
            .InitialFileName = ThisWorkbook.Path & "\販売ソフト出力\"
                MsgBox "利用できるのは、" & vbCrLf & _
                    "csv形式またはエクセル形式のファイルになります。" _
                    , vbInformation, "インボイス見積納品請求3点日付版作成"
            If .Show = True Then
                If Right(.SelectedItems(1), 3) = "txt" Then
                     MsgBox "txt形式では利用できません。", vbExclamation, _
                     "インボイス見積納品請求3点日付版作成"
                     Exit Sub
                Else
                    .Execute
                End If
            Else
'[キャンセル]ボタンがクリックされた
                MsgBox "キャンセルが押されました", vbExclamation, _
                "インボイス見積納品請求3点日付版作成"
                Canc = 1
                Exit Sub
            End If
        End With
End Sub

ファイルのデータをエクセルシートに展開する

「データ転記」プロシージャー

ユーザーフォームの顧客番号が適切かどうかを調べて、不適の場合はメッセージを出して終了します。

「外税計算」シートのデータを一旦クリアします。その後に導入するファイルのデータの必要部分を転記していきます。

「導入するファイルのデータ」はその期間中の全売上データとなります。その中から「顧客番号」のデータだけ取り出すことにまります。

VLookupやMatchで探す場合、最初に一致したデータやデータ行を取りだすと、そのコードを抜け出し次に進んでしまいます。Find+FindNextを利用するのが良いでしょう。

ここでは、「For~Next」構文でシンプルに1行ずつ合致をチェックしていく方法を使っています。

vbasheetvariableeyecatch ワークシートを変数化する3つの手法 オブジェクト変数など vbamsgboxeyecatch メッセージボックス MsgBox実際の使い方を最速に理解 vbawithstateeyecatch With~End Withの使い方。VBAコードを簡潔に記述する vbaendpropertyeyecatch Endプロパティで上下左右の最終セルを取得 fornextirekoeyecatch For~Nextのループと入れ子構造をVBA最速理解
VBA
Sub データ転記()
'変数を宣言する
    Dim MNSBook As Workbook
    Dim SotSheet As Worksheet
    Dim CosNo, k, x, j As Long
    Dim csvRow, SotRow, GS As Long
    Dim Res(1 To 7) As Variant
    Dim CsvBook As Workbook
    Dim CsvSheet As Worksheet
        Set MNSBook = ThisWorkbook
        Set SotSheet = ThisWorkbook.Worksheets("外税計算")
'インボイス3点操作パネルのデータの表示形式を数値化して判断する
        CosNo = Val(StrConv((インボイス3点操作パネル.顧客番号.Value), _
                    vbNarrow))
        If CosNo = 0 Then
            MsgBox "顧客番号を入力してください。" _
                & vbCrLf & "全半角数字のみです。" & vbCrLf & _
                "文字と数字の複合番号は使えません。", _
                vbInformation, "インボイス見積納品請求3点日付版作成"
            Exit Sub
        End If
        Call Module6.データを開く
        If Canc = 1 Then
            MsgBox "データファイル選択エラーです。" & vbCrLf & _
                        "最初からやり直してください。", vbInformation, _
                        "インボイス見積納品請求3点日付版作成"
            Exit Sub
        End If
'選択したファイルが開かれてアクティブ状態になっている
        Set CsvBook = ActiveWorkbook
        Set CsvSheet = ActiveSheet
'「外税計算」の残っている以前のデータを消去
        With SotSheet
            .Activate
            .CheckBoxes.Delete
            With .Range(Range("A2"), Range("A2").SpecialCells _
                        (xlCellTypeLastCell))
                .ClearContents
            End With
        End With
'販売王の選択データファイルの必要部分をデータ取り出し
        CsvBook.Activate
        With CsvSheet
            .Select
            csvRow = .Cells(Rows.Count, 1).End(xlUp).Row
            k = 0
            For x = 2 To csvRow
                If .Range("K" & x).Value = CosNo Then
                    Res(1) = k + 1
                    Res(2) = Range("B" & x).Value
                    Res(3) = .Range("AK" & x).Value
                    Res(4) = .Range("AU" & x).Value
                    Res(5) = "冊"
                    Res(6) = .Range("AW" & x).Value
                    Res(7) = Res(4) * Res(6)
'取り出しデータを「外税計算」に転記
                    For j = 1 To 7
                        With SotSheet
                            If j = 1 Then
                                .Cells(k + 2, j) = Res(j)
                            Else
                                .Cells(k + 2, j + 2) = Res(j)
                            End If
                        End With
                    Next j
                    k = k + 1
                End If
            Next x
        End With
        CsvBook.Close False
'「作業シート」で合計金額を計算
        With SotSheet
            .Select
            .Columns("D").AutoFit
            SotRow = .Cells(Rows.Count, 1).End(xlUp).Row
            GS = WorksheetFunction.Sum(.Range(Cells(2, 8), _
                        .Cells(SotRow, 8)))
            .Cells(SotRow + 1, 7) = "合計"
            .Cells(SotRow + 1, 8) = GS
        End With
        MsgBox "ソリマチからのデータを「外税計算」に移しました。" _
        & vbCrLf & "全商品、外税単価になる様に再計算してください。" _
        , vbInformation, "インボイス見積納品請求3点日付版作成"
End Sub

ソリマチ販売王データ連携のVBA まとめ

invoice3tenhanbaioup004

販売管理ソフト「ソリマチ販売王」とのデータ連携について説明を行いました。

これで、「インボイス見積納品請求伝票日付版」の作成は完了しました。

利用される人によって、それぞれより使い勝手が良くなるよう、改善をしたいということがあると思います。

是非一度ご自分で組み立ててみて、カスタマイズをしてみてください。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました。

エクセルVBA最速理解で必要な知識を集めよう!

エクセルVBA業務ツールで日常の業務改善を行いましょう。

VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。

アンケートでポイ活しよう!!

アンケートに答えれば答えるほど ”使える” ポイントがたまります。

NTTコム サーチ

af_banner01

Dstyle web

dstyleweb_logo
dstyle_320x50-min