官公庁に提出する3点セット伝票は、市販の売上管理ソフトでもうまく作れません。ただし販売王のデータ出力を上手く使えばエクセルVBAでチョチョイと作成できてしまいます。
こんにちは、じゅんぱ店長(@junpa33)です。
今回は「販売帳票(見積書、納品書、請求書)を作成するエクセルソフト」についての追加的な記事になります。
日々の販売に使用している売上管理ソフト「販売王」のデータと連携する方法を紹介します。
毎日利用している売上管理ソフトに、入力した日々販売データは別に存在している。
取引先より特別に指定された様式で3点伝票を作成するのに、また同じ売上データを入力する。この帳票は売上管理ソフトでは作れない。
これは誰がどう考えても、時間効率が悪すぎると言わざるを得ないでしょう。
では、
既に売上管理ソフトに入力した日々データを出力して、この3点セット販売帳票を作成することはできないでしょうか。
これは問題解決しないと!
記事内容に進む前に、前回の記事を確認されるにはこちら↓になります。
実用に耐えるユーザーフォーム作成のコツは具体的実例を教科書に伝票の作成でデータのやり取りをするソリマチ販売王に関する記事はこちらです。
見積・納品・請求書を同一書式で作成できるExcelVBA
見積書納品書請求書作成ソフトの無料ダウンロードと取説
販売王のデータ出力を利用。見積納品請求3点帳票をVBA作成
販売データ入力.xlsmの使用法。販売王の売上データ作成
売上伝票データを外部入力。販売王用CSVファイルを作る
Web上のデータを販売王の商品登録に使えるVBAマクロ
商品情報をWebから収集する。エクセルVBAで入力データ作成
販売王のデータ入出力形式をチェックして利用法を理解する。
見積書納品書請求書作成の記事編成
- 見積書納品書請求書作成ソフトの使い方とダウンロード
- 見積書納品書請求書作成ソフトの作成概略
コンテンツ
売上管理ソフトでは作れない帳票
商品販売に関する伝票発行に売上販売ソフトを利用するのは、皆さん普通に行っていることだと思います。
ソフトの入力手順で売上データを打ち込めば、自動的に帳票化してくれるという便利なソフトです。
当店では長年「販売王」を利用しています。
そんな便利なソフトでも、伝票作成で「使えないわ。コイツ」と思う時があります。
それはいわゆる「3点セット」と言われる帳票です。主に官公庁向けに提出する見積書・納品書・請求書のことです。
しかも、この見積書・納品書・請求書は、単に同一書式というだけでなく、
「税込金額で表示」とか「税別で最終合計で消費税加算」とか「セット品は1項目でとか、内容全て表示とか」
提出部署によっても、いろいろローカルルールさえもあります。
いつも使っている売上販売ソフトで、売上データを外部へ出力することは出来る。それは自分でもできる。
でも、出力されたそれは正に ” 売上データ表 ” データ羅列の表で、自分はそこから一歩も前へ進めない。
この記事で、「販売王」限定ですが、 ” 一歩前へ進む ” ことが出来るようになります。
3点帳票の作成に販売王のデータを利用
手書きの伝票作成は長年来の方法で、ルーチン化していてビックリするくらい苦にならない人もいます。
端で見てる人が苦になるくらいです。
納品には、作る伝票は既製伝票の「見積・納品・請求3枚つづり」。また、1ヶ月分を束ねて合計金額出して表紙付けて取引先に提出。記入はもちろんオール手書き。
納品書が1枚しかないので、納品する度に請求書も出しているShopもある。(誰が1ヶ月合計するの?)
- 期間や年度契約の場合、月締めで作成することが多いので、1か月内に納品した商品全てを一覧化して帳票作成する。計算ミスをしないため何度か検算することは必須。
- 受注が1案件単位の場合、帳票も1案件単位。分割納品が発生すれば、その時の分割納品のための(分割)納品書の添付が必要。
- 各伝票に書く品名は(当たり前ですが)完全一致なので、特に手書きの場合は、転記ミスに最大級の注意が必要。
- とにかく帳票作成に時間がかかる。作業手間がスゴイ。
ここから続けて記事を読み進めて時間の無駄にならない人は、
大前提として、手書きの販売伝票はやめている店。やめる意思がハッキリしている店。
その後の問題で、
伝票3点セット作成について、お手製の伝票を改善したいと考えている店。という方々が更に、この記事を読み進めてください。
そして「これから始めよう。」とか「管理ソフトを切り替えたい。」とか考えている人は、「販売王」(ソリマチ)をお勧めします。販売実績も20年以上、コスパも最高に良いソフトです。
ズバリ!解決策は、販売管理ソフトのデータベースをエクセルに流し込み、必要なデータ抽出作業行い、提出用の3点伝票を完成させる。
利用ツールとしては、エクセルと売上管理ソフトの「販売王」です。
当店では、これから話す方法を使っていて、この苦悩から全面的に解放されました。
販売王の出力データをエクセルVBAで3点帳票作成する
簡潔に言えば、売上管理ソフトの販売王にある日々の販売データを、外部フォルダにエクスポートし、
利用するエクセルブックにデータとして入力できればいいということです。
もっと具体的には、「販売帳票(見積書、納品書、請求書)を作成するエクセルソフト」の「作業シート」に、「販売王」からエクスポートしたデータの必要な部分を移すことが出来れば良いということです。
方法は、以下のこれから説明していくVBAコードを、エクセルブックに付け加えていただければOKです。
完成すれば、以後のデータの再度の打ち直しはしなくてよくなるということです。
販売王の売り上げデータを出力する方法
最初に販売王のデータ出力を行います。
CSV形式で出力されますが、保存先フォルダを決めておきましょう。
今回はこのように配置します。保存先を「販売ソフト出力」フォルダとします。
見納請3点伝票 ⇒
⇒ 「販売ソフト出力」フォルダ
⇒ 見納請3点伝票作成.xlsm
販売王の売上伝票のデータ出力の方法については、こちら↓が参考になります。
販売王のデータ入出力形式をチェックして利用法を理解する。出力した「生の売上データ」は、期間中の全顧客対象で、その1商品1顧客当たりのデータ列が55列(販売王19)になります。
月当たりで絞めれば何百行(何千行)にもなります。つまりこのままでは非常に扱い辛いデータになっています。
保存した出力データファイルを選択するVBAコード
販売王データ保存フォルダから、使用する売上データファイルを選択するためのVBAコードです。
見納請3点伝票作成.xlsm を開いて新たにモジュールを挿入します。
コードの全体はこのようになります。
Option Explicit
Dim Canc As Long
Sub データを開く()
Dim FD As FileDialog, f As Variant
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
このプロシージャーが起動すると、
先ず、利用可能ファイルのメッセージが表示されます。
次に、「販売ソフト出力」フォルダ内のファイル選択ダイアログが表示されます。
.txt ファイルを選んだ場合は、このメッセージが表示されます。再度最初からやり直してください。
キャンセルボタンを押した場合は、メッセージが表示されて、このプロシージャーは終了します。
この時VBAコードとして、キャンセルされたという情報を入れ子の親のプロシージャーに送るために、
Cancという変数を設定して「1」という数字を代入します。
.csvファイルを選択すると、エクセル形式でファイルが開かれます。
エクセルソフトの「作業シート」に売上データを転送するVBAコード
選択して開いた売上データのCSVファイルから、必要なデータを選び、「販売帳票(見積書、納品書、請求書)を作成するエクセルソフト」の「作業シート」に転記します。
VBAコード全体は、このようになります。
Sub データ転記()
'変数を宣言する
Dim MNSBook As Workbook
Dim SaSheet As Worksheet
Dim CosNo, k, x, j As Long
Dim csvRow, SaRow, GS As Long
Dim Res(1 To 6) As Variant
Dim CsvBook As Workbook
Dim CsvSheet As Worksheet
Set MNSBook = ThisWorkbook
Set SaSheet = ThisWorkbook.Worksheets("作業シート")
'操作パネルのデータの表示形式を数値化して判断する
CosNo = Val(StrConv((操作パネル.顧客番号.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
'「作業シート」の残っている以前のデータを消去
SaSheet.Activate
Range(Range("A2"), Range("A2") _
.SpecialCells(xlCellTypeLastCell)).ClearContents
'販売王の選択データファイルの必要部分をデータ取り出し
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("AK" & x).Value
Res(3) = .Range("AU" & x).Value
Res(4) = "冊"
Res(5) = .Range("AW" & x).Value
Res(6) = Res(3) * Res(5)
'取り出しデータを「作業シート」に転記
For j = 1 To 6
SaSheet.Cells(k + 2, j) = Res(j)
Next j
k = k + 1
End If
Next x
End With
CsvBook.Close False
'「作業シート」で合計金額を計算
With SaSheet
.Select
SaRow = .Cells(Rows.Count, 1).End(xlUp).Row
GS = WorksheetFunction.Sum(.Range(Cells(2, 6), _
.Cells(SaRow, 6)))
.Cells(SaRow + 1, 6) = GS
End With
End Sub
BookとSheetオブジェクトを変数化して代入します。
ユーザーフォーム「操作パネル」のテキストボックス顧客番号欄に入力された値を判断する。
入力された値をStrConvで全角を半角に変換します。
Valで文字列を数値に変換します。
顧客番号欄が無記入の場合は「0」と扱われます。
0以外の半角か全角の数値が入力されていないと、メッセージが表示され終了します。
Val関数はデータ型不一致の解決策。文字列型から数値型へ先ほどの「データを開く」プロシージャーを呼び出します。
注意ポイントとして、
「販売ソフト出力」フォルダ内のファイル選択ダイアログで「キャンセルボタン」が押されたとき、
このプロシージャーは、データファイルを開くことなく終了します。
そして、
入れ子の親プロシージャー「データ転記」に戻りますが、ここで、「開いたであろうファイル」を待ち受けていますので、
「ファイルが無い」ことでエラーストップになってしまいます。これを回避するために、
「Canc」という変数を設定しています。
この変数には、ファイル選択ダイアログで「キャンセルボタン」が押されたときに「1」が代入されます。
「データを開く」から引き継いで、「Canc=1」の時に親の「データ転記」プロシージャーが実行中止されるようにしています。
その時にメッセージで ” データファイル選択エラーです。最初からやり直してください。” と表示されるようにしています。
選択されて開いた販売王の売上データがアクティブになっています。
この時、そのアクティブになったBOOKとシートに名前を付けます。(CSVファイルをエクセル形式で開くとブックと同名のシートが1枚だけ存在しています。)
CsvBookとCsvSheetと名付けた後は、このVBAを実行しているBOOKからフォーカスが外れても、
このBOOK名やシート名で呼び出すことが出来るようになります。
先回に使った売上データが「作業シート」に残っていますので、まずそれを消去します。
SpecialCellsメソッドはセル検索し選択する データ入力済セルの最終行番号を取得するFor~Nextを使って、売上データ.csvからデータを拾ってきて、作業シートへ順番に転記していきます。
販売王から出力した販売データは、指定期間内の全顧客の全売上データになりますので、
先ず、必要な特定の顧客データだけ拾ってくる必要があります。(変数x)
該当のデータ55項目の中から必要なデータ6項目をピックアップします(変数j)
それを順番に「作業シート」に移していくということです。
For~Nextのループと入れ子構造をVBA最速理解 1次元配列とは。静的配列と動的配列 エクセルVBA転記したデータ、その商品の合計の最後の合計欄にトータル合計を計算し表示します。
SUM関数で合計計算!実務で使えるVBAコード作成プロシージャーをボタンで操作する
完成したプロシージャーを、ユーザーフォーム「操作パネル」に配置しているボタンとリンクさせます。
記事をご覧いただいている読者の皆さんの中には、「販売王」を利用していない方もおられます。
「操作パネル」に配置している「データ連携」というボタンですが、
「販売王」を利用するかしないかで、この機能のONとOFFが出来るようになっています。
チェックボックスの「ソリマチ販売王連携」をチェックしたかしてないかで判断します。
VBAコードを記述するのは、この記事↓で紹介している部分になります。
実用に耐えるユーザーフォーム作成のコツは具体的実例を教科書にユーザーフォームモジュールの以下のコードです。
Private Sub データ連携する_Click()
If CheckBox1 = False Then Exit Sub
Call Module6.データ転記
End Sub
この2行のVBAコードでボタンとの接続完了です。
見積書、納品書、請求書3点帳票作成のまとめ
これで、帳票を作りたい取引先の必要な売上データが、「作業シート」に移りました。
後は、「販売帳票(見積書、納品書、請求書)を作成するエクセルソフト」の通常操作で、
「3点セット」帳票が完成です。
この様に、「販売王」を使えばパソコン操作でもデータ入力作業をすることなく、
マウスクリックだけで「3点セット」を作成することが出来ます。
恐らく業務改善の時短効果は、「何時間」から「分単位」になると思います。
ウソっぽく聞こえますが、ホントです。
今も店長は実践しています。
ビックリするよ
これで、オプション設定も含めて「販売帳票(見積書、納品書、請求書)を作成するエクセルソフト」は完成いたしました。
次回は、全体を通してこのソフトの取扱説明を行いたいと思います。
次の記事に進むのはこちら↓からです。
見積書納品書請求書作成ソフトの無料ダウンロードと取説エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。
アンケートでポイ活しよう!!
アンケートに答えれば答えるほど ”使える” ポイントがたまります。