どうもじゅんぱ店長(@junpa33)です。
取次から提供される資料の中で、雑誌と書籍の発売予定表(送品予定表)があります。
このデータは、コミック「何月何日に発売予定です。」とかのデータ資料のことではなくて、
明日あさっての送品となる店着雑誌・書籍の送品予定のデータ資料についてのデータになります。
現在のものは、デフォルトのままだとほぼ単なるデータの羅列で、あまりユーザーサイドの資料とは言えません。(取次にもよるとは思いますが・・・)
今回の記事は、このデータ資料をより利用価値のあるデータ表にエクセルスキルで加工し、さらに業務の効率化にも利用しましょうということです。
それでは早速、その「送品予定表」をエクセルVBAで作成していきたいと思います。
この記事では雑誌の「送品予定表」を仕上げていきます。
送品予定表の利用用途についての記事はこの記事↓で確認いただけます。
「新刊送品予定表を他データと連携させて営業伝票作成の自動化に利用する」
送品予定表作成の関連の記事はこちらになります。
コンテンツ
発売予定データを加工する全体の流れ
作業的にはこの様な内容で、順番に作業を行っていきたいと思います。
- 新規のエクセルブックを立ち上げて、3枚のデフォルトシートのシート名を「Paste」シート、「設定操作」シート、「送品予定表」シートとして名前の名称変更をします。
- 「Paste」シートは、取次から発信されてくる生のデータ(CSV)を貼り付けるシートとします。
- 「設定操作」シートは、組み上げたVBAを起動させる”操作ボタン”を設置する場所、送品予定表を適切に作成するための初期設定を入力する入力表を設置する場所とします。
- 「送品予定表」シートは、仕上がった一覧表を表示するシートになります。
3の「設定操作」シートが、実際の操作の中心となります。
使える送品予定表を独自に作成します
シートの名称変更をします
エクセルを起動して白紙のエクセルBOOKを開いてください。
「Sheet1」を「Paste」に
「Sheet2」を「設定操作」に
「Sheet3」を「送品予定表」に
名称変更してください。
変更方法は何度か行っていますので、お分かりかと思いますが、
念のため、変更方法はこちらで確認できます。↓
こんな感じになります。
そしてこのBOOKに名前を付けます。
一度、「名前を付けて保存」で保存してください。
「送品予定表作成.xlsm」とネーミングしてください。
「Paste」シートは、白紙のままでOKです。
「設定操作」シートで操作する用のVBAを作成します
送品予定表の作表をするVBAのコントロールボタンを「設定操作」シートに設置します。
送品予定表を適切に作成するための利用者側の初期設定値を入力する入力表を設置します。
送品予定表の列幅を整える
最初に、VBAで「送品予定表」の作表のためのコードを組み上げます。
目標はこの様になります。
Moduleを挿入してください。(Module1) 挿入方法の確認はこちら
エクセルVBAを初めて立ち上げる時に参考になる記事はこちらです。
With~End Withの使い方については、この記事を参考にしてください。
必要な項目を表示する列の幅を整えます。
項目は例えば、このように設定します。(項目変更は後でも可能です)
- NO.
- 送品日付
- 陳列(雑誌ジャンル)
- 雑誌コード
- 号数
- 日付
- 年
- 出版社
- 雑誌名
- 配本冊数
- 本体価格
- 消費税
項目数が多いのでちょっと詰めた感じになります。
コードはこのようになります。
コード①
Sub 送品表作成()
Worksheets("送品予定表").Select
'コード①
Range("A:L").Font.Size = 9
Range("A:A").ColumnWidth = 4
Range("B:B").ColumnWidth = 8
Range("C:C").ColumnWidth = 10
Range("D:D").ColumnWidth = 8
Range("E:F").ColumnWidth = 4
Range("G:G").ColumnWidth = 3
Range("H:H").ColumnWidth = 11
Range("I:I").ColumnWidth = 21
Range("J:J").ColumnWidth = 7
Range("K:K").ColumnWidth = 6
Range("L:L").ColumnWidth = 6
Range("A1").RowHeight = 21
Range("A1") = "No."
Range("B1") = Worksheets("設定操作").Range("J4")
Range("C1") = Worksheets("設定操作").Range("J5")
Range("D1") = Worksheets("設定操作").Range("J6")
Range("E1") = Worksheets("設定操作").Range("J7")
Range("F1") = Worksheets("設定操作").Range("J8")
Range("G1") = Worksheets("設定操作").Range("J9")
Range("H1") = Worksheets("設定操作").Range("J10")
Range("I1") = Worksheets("設定操作").Range("J11")
Range("J1") = Worksheets("設定操作").Range("J12")
Range("K1") = Worksheets("設定操作").Range("J13")
Range("L1") = "消費税"
With Range("A1:L1")
.WrapText = True
.Font.Bold = True
End With
'コード①ここまで
End Sub
それと、送品予定表シートのページ設定を行っておきます。
印刷時の4辺余白をこのように設定しておいてください。
表示データの取り出し設定
「Paste」シートに貼り付けたデータの必要部分を取り出す設定をします。
「設定操作」シート上にまず、必要なデータ列を指定する入力欄を作ります。
表示する項目の設定とそのデータ列の列名を指定します。
VBAでデータ値を収集しますので、入力表の表示位置に注意してください。
データ入力セルを”J4からK13”の番地に必ずセットしてください。
表の体裁については、お好みでデコレートしてください。
例えばこの様になります。
次に、
Pasteシートに貼り付ける送品データは先頭行が「項目か?データか?」を、確認する必要があります。(項目行は使わないので作表時にこれを表示しないようにします。)
⇒操作設定シートに設定入力欄を設けます。”NOなら「0」” そして ”YESなら「1」”を入力します。
消費税を計算しますので、税率を入力する欄を作ります。
この場合もこのシートから設定値を取り出しますので、入力セル位置を間違わないようにしてください。ここは作表の肝の部分になります。
ここでの完成形はこのようになります。
上の入力表内の数値は”例えばの値”です。実際の使用では適宜変更してください。
データ表示のVBA組み上げ
●先ほどの設定の項目で指定した値を基に「Paste」シート上のデータを「送品予定表」シートに移します。
●消費税を加味した「税込価格」を計算して表示する設定をします。計算は四捨五入の計算方法です。
「外商定期購読雑誌リスト」と「店頭お取り置き予約雑誌リスト」を参照して、
その発売時に注意喚起としてチェックマークを表示するようにもできます。これについては、また改めて別記事で紹介させていただきます。
それでは、送品予定表の体裁を整えていきます。
- フォント設定
- 罫線設定
- 印刷範囲
- プリントタイトル
コードはこのようになります。
入力セルの最終行を取得する方法はこちらを参考にしてください。
Round関数の使い方についてはこの記事を参考にしてください。
新規作成ブックとシート。アクティブ状態でやっておくことはこの記事を参考にしてください。
コード②
Dim a As Integer
Dim Prow As Long
Dim t As Long, x As Long
Dim tax As Long
Worksheets("設定操作").Select
a = Range("I5")
tax = Range("G9")
Worksheets("Paste").Select
Prow = Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("設定操作").Select
For t = 0 To 9
Va = Worksheets("設定操作").Range("K" & 4 + t)
Worksheets("Paste").Select
Range(Cells(1 + a, Va), Cells(Prow, Va)).Copy Destination:=Worksheets("送品予定表").Cells(2, 2 + t)
Worksheets("設定操作").Select
Next t
Worksheets("送品予定表").Select
For x = 2 To Prow
Range("A" & x) = x - 1
Range("L" & x).Value = Application.Round(Range("K" & x).Value * (1 + tax / 100), 0)
Next x
Application.CutCopyMode = False
Worksheets("送品予定表").Range("A:L").Font.Size = 10
With ActiveSheet.PageSetup
.PrintTitleRows = "$1:$1"
.PrintTitleColumns = ""
.PrintArea = "A1:L" & Prow
.CenterHeader = "雑誌新刊送品予定表"
.RightHeader = "☆マークは配達候補、■マークは取置候補"
End With
Range(Cells(1, 1), Cells(Prow, 12)).Select
With Selection.Borders
.LineStyle = xlContinuous
.Weight = xlHairline
End With
Range("A1").Select
Worksheets("Paste").Select
Range("A1").Select
Worksheets("設定操作").Select
Range("E1").Select
MsgBox "作成が終了しました。"
End Sub
少し長くなってしまいましたが、ここまでが”Module1”の記述となります。
「設定操作」シートに起動ボタンを設置するは後ほど行います。
データバックアップとクリアーのVBA組み上げ
次に作成した送品予定表のバックアップと終了時のクリアーについてのVBAを組みます。
モジュールを追加して(Module2)そちらに記述します。
追加方法を確認するのはこちらをご覧ください。
関連記事
データバックアップのコード
バックアップのデータのネーミングは「雑誌送品+(送品日付)+.xlsx」となります。
バックアップデータは「雑誌送品」フォルダに保存する設定です。
VBAコードで、自動でフォルダを作成することもできますが、一回作ればOKですので、あらかじめ手作業で「雑誌送品」フォルダをこの「送品予定表作成.xlsm」と同じ場所に作っておいてください。
Sub 送品表BUP()
Dim mypath As String
Dim FN As String
Worksheets("送品予定表").Select
Cells.Select
Selection.Copy
Range("A1").Select
ChDir ThisWorkbook.Path & "\雑誌送品"
Workbooks.Add
Cells.Select
ActiveSheet.Paste
FN = Range("B2")
ActiveWorkbook.SaveAs Filename:="雑誌送品" & FN & ".xlsx"
Range("A1").Select
ActiveWorkbook.Close
Worksheets("送品予定表").Select
Range("A1").Select
End Sub
データクリアーのコード
送品予定表のクリアーのコードを組み立てます。
Sub 送品表クリアー()
Worksheets("送品予定表").Select
Cells.Select
With Selection
.ClearContents
.UseStandardHeight = True
.UseStandardWidth = True
.ClearFormats
End With
Range("A1").Select
With Worksheets("送品予定表").PageSetup
.PrintArea = ""
.PrintTitleRows = False
End With
Worksheets("設定操作").Select
Range("E1").Select
End Sub
Pasteシートのクリアーのコードを組み立てます。
Sub Pasteシートクリアー()
Worksheets("Paste").Select
Cells.Select
With Selection
.ClearContents
.UseStandardHeight = True
.UseStandardWidth = True
.ClearFormats
End With
Range("A1").Select
Worksheets("設定操作").Select
Range("E1").Select
End Sub
クリアーとしては、2種類で動作ボタンも2つ作ります。
簡単にクリアーをひとまとめにすることもできますが、あえてステップを踏んでクリアーするようにしています。
Module1とModule2の最終的な記述
モジュールの記述内容を整理します。
この様になります。
Module1は、作成するためのコードです。
Module2はバックアップと利用後のシートクリアーのコードです。
操作ボタンの設置
最後に操作ボタンを「設定操作」シートに設置します。
- 送品表作成ボタン
- 送品表バックアップ
- 送品表クリアー
- Pasteシートクリアー
ボタンの設置についてはこちらの記事を参考にしてください。
独自の送品予定表を作成のまとめ
新刊発売予定表は、取次などからのオンラインのダイレクトなデータでもデフォルトで利用できるようになっているとは思います。
けれども、利用範囲を自店なりに広げることでより大きく効率的に業務ができるようになります。
その広げるためのツールの一案が今回紹介した「送品予定表」作成方法となります。
今回のプランに加えて、
- 「外商定期購読雑誌リスト」
- 「店頭お取り置き予約雑誌リスト」
と、さらにデータ連携させることで、
「きょうの発売雑誌の配達や取り置きはあったかな?」
と何度もリストを見返す手間や、人的な配達ミスを減らすことができるようになると思います。
このプランは改めて記事で紹介していく予定です。しばらくお待ちください。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です
初めてのVBAの勉強、構えなくても気軽に始められる。

電子書籍版「大村式【動画&テキスト】Excelマクロ&VBA最高のはじめ方」をamazonで見てみる
(著者)大村あつし
(出版社)技術評論社
(税込価格)1,628円(本体1,480円+税)
学習書の新しい形です。
YouTubeと完全リンクした参考書です。入門と基礎を重点的に22本の動画で解説をしています。
ちょっとした空き時間を利用してでもスマホがあれば学習ができます。
動画は優しい語り口調で、視聴者にある意味安心感を与えてくれます。動画は5分から20分間ぐらいで22本の構成です。
文章解説と動画解説の関係性は、動画解説が主で、文章解説がサポートいう使い方もできます。
エクセルVBAを使って業務効率を上げて行くのに、始めのうちに知っておきたい内容を纏めています。
今回の記事はここまでです。 最後までご覧いただき有難うございました。