取次の発売予定データを加工して使える送品予定表を独自に作成する。

souyosakueyecatcha

どうもじゅんぱ店長(@junpa33)です。

 

取次から提供される資料の中で、雑誌と書籍の発売予定表(送品予定表)があります。

このデータは、コミック「何月何日に発売予定です。」とかのデータ資料のことではなくて、

明日あさっての送品となる店着雑誌・書籍の送品予定のデータ資料についてのデータになります。

 

現在のものは、デフォルトのままだとほぼ単なるデータの羅列で、あまりユーザーサイドの資料とは言えません。(取次にもよるとは思いますが・・・)

今回の記事は、このデータ資料をより利用価値のあるデータ表にエクセルスキルで加工し、さらに業務の効率化にも利用しましょうということです。

 

それでは早速、その「送品予定表」をエクセルVBAで作成していきたいと思います。

この記事では雑誌の「送品予定表」を仕上げていきます。

 

送品予定表の利用用途についての記事はこの記事↓で確認いただけます。

新刊送品予定表を他データと連携させて営業伝票作成の自動化に利用する

 

送品予定表作成の関連の記事はこちらになります。

「送品予定表作成」の記事一覧を開く

 

発売予定データを加工する全体の流れ

 

作業的にはこの様な内容で、順番に作業を行っていきたいと思います。

  1. 新規のエクセルブックを立ち上げて、3枚のデフォルトシートのシート名を「Paste」シート、「設定操作」シート、「送品予定表」シートとして名前の名称変更をします。
  2. 「Paste」シートは、取次から発信されてくる生のデータ(CSV)を貼り付けるシートとします。
  3. 「設定操作」シートは、組み上げたVBAを起動させる”操作ボタン”を設置する場所、送品予定表を適切に作成するための初期設定を入力する入力表を設置する場所とします。
  4. 「送品予定表」シートは、仕上がった一覧表を表示するシートになります。

 

 

3の「設定操作」シートが、実際の操作の中心となります。

 

使える送品予定表を独自に作成します

 

シートの名称変更をします

 

エクセルを起動して白紙のエクセルBOOKを開いてください。

「Sheet1」を「Paste」

「Sheet2」を「設定操作」

「Sheet3」を「送品予定表」

名称変更してください。

変更方法は何度か行っていますので、お分かりかと思いますが、

念のため、変更方法はこちらで確認できます。↓

「まずは、Sheet(シート)名の変更」

 

こんな感じになります。

souyosaku001aa

 

そしてこのBOOKに名前を付けます。

一度、「名前を付けて保存」で保存してください。

「送品予定表作成.xlsm」とネーミングしてください。

 

「Paste」シートは、白紙のままでOKです。

 

「設定操作」シートで操作する用のVBAを作成します

 

送品予定表の作表をするVBAのコントロールボタンを「設定操作」シートに設置します。

送品予定表を適切に作成するための利用者側の初期設定値を入力する入力表を設置します。

 

送品予定表の列幅を整える

 

最初に、VBAで「送品予定表」の作表のためのコードを組み上げます。

目標はこの様になります。

souyosaku004a

 

Moduleを挿入してください。(Module1) 挿入方法の確認はこちら

 

MEMO

エクセルVBAを初めて立ち上げる時に参考になる記事はこちらです。

エクセルVBA 始めての起動。VBEの立ち上げ、保存と終了

With~End Withの使い方については、この記事を参考にしてください。

With~End Withの使い方。VBAコードを簡潔に記述する

 

必要な項目を表示する列の幅を整えます。

項目は例えば、このように設定します。(項目変更は後でも可能です)

  • 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辺余白をこのように設定しておいてください。

souyosaku006

 

表示データの取り出し設定

 

「Paste」シートに貼り付けたデータの必要部分を取り出す設定をします。

 

「設定操作」シート上にまず、必要なデータ列を指定する入力欄を作ります。

表示する項目の設定とそのデータ列の列名を指定します。

 

VBAでデータ値を収集しますので、入力表の表示位置に注意してください。

データ入力セルを”J4からK13”の番地に必ずセットしてください。

 

表の体裁については、お好みでデコレートしてください。

例えばこの様になります。

souyosaku005a

 

次に、

Pasteシートに貼り付ける送品データは先頭行が「項目か?データか?」を、確認する必要があります。(項目行は使わないので作表時にこれを表示しないようにします。)

⇒操作設定シートに設定入力欄を設けます。”NOなら「0」” そして ”YESなら「1」”を入力します。

 

消費税を計算しますので、税率を入力する欄を作ります。

 

この場合もこのシートから設定値を取り出しますので、入力セル位置を間違わないようにしてください。ここは作表の肝の部分になります。

 

ここでの完成形はこのようになります。

souyosaku007a

上の入力表内の数値は”例えばの値”です。実際の使用では適宜変更してください。

 

データ表示のVBA組み上げ

 

●先ほどの設定の項目で指定した値を基に「Paste」シート上のデータを「送品予定表」シートに移します。

消費税を加味した「税込価格」を計算して表示する設定をします。計算は四捨五入の計算方法です。

「外商定期購読雑誌リスト」と「店頭お取り置き予約雑誌リスト」を参照して、
その発売時に注意喚起としてチェックマークを表示するようにもできます。これについては、また改めて別記事で紹介させていただきます。

 

それでは、送品予定表の体裁を整えていきます。

  • フォント設定
  • 罫線設定
  • 印刷範囲
  • プリントタイトル

コードはこのようになります。

 

MEMO

入力セルの最終行を取得する方法はこちらを参考にしてください。

データ入力済セルの最終行番号を取得するVBAコード

Round関数の使い方についてはこの記事を参考にしてください。

Round関数の毒針。VBAで数値を四捨五入する時の注意点

新規作成ブックとシート。アクティブ状態でやっておくことはこの記事を参考にしてください。

VBA 新規作成ブックとシート。アクティブ状態でやっておくこと

 

コード②

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)そちらに記述します。

 

追加方法を確認するのはこちらをご覧ください。

「VBE(ビジュアルベーシックエディター)を起動する」

関連記事

エクセルVBA 始めての起動。VBEの立ち上げ、保存と終了

データバックアップのコード

 

バックアップのデータのネーミングは「雑誌送品+(送品日付)+.xlsx」となります。

バックアップデータは「雑誌送品」フォルダに保存する設定です。

 

VBAコードで、自動でフォルダを作成することもできますが、一回作ればOKですので、あらかじめ手作業で「雑誌送品」フォルダをこの「送品予定表作成.xlsm」と同じ場所作っておいてください。

 

MEMO

ChDirの使い方についてはこの記事を参考にしてください。

カレントフォルダを簡単に変更できるChDirステートメントの使い方

 

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

 

データクリアーのコード

 

送品予定表のクリアーのコードを組み立てます。

 

MEMO

シートのクリアのためのエクセルVBAコードの作り方については、この記事が参考になります。

エクセルVBA シートのクリアーを目的のメソッド別に最速理解

 

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は、作成するためのコードです。

souyosaku010_2a
Module2はバックアップと利用後のシートクリアーのコードです。

souyosaku011a

 

操作ボタンの設置

 

最後に操作ボタンを「設定操作」シートに設置します。

  • 送品表作成ボタン
  • 送品表バックアップ
  • 送品表クリアー
  • Pasteシートクリアー

 

souyosaku008a

 

ボタンの設置についてはこちらの記事を参考にしてください。

「データ抽出ボタンを設置する」

 

MEMO

コマンドボタンの設置方法はこちらの記事も参考になります。

エクセルVBA コマンドボタンをシートに設置する2つの方法

 

独自の送品予定表を作成のまとめ

 

新刊発売予定表は、取次などからのオンラインのダイレクトなデータでもデフォルトで利用できるようになっているとは思います。

けれども、利用範囲を自店なりに広げることでより大きく効率的に業務ができるようになります。

その広げるためのツールの一案が今回紹介した「送品予定表」作成方法となります。

 

今回のプランに加えて、

  • 「外商定期購読雑誌リスト」
  • 「店頭お取り置き予約雑誌リスト」

と、さらにデータ連携させることで、

「きょうの発売雑誌の配達や取り置きはあったかな?」

と何度もリストを見返す手間や、人的な配達ミスを減らすことができるようになると思います。

 

このプランは改めて記事で紹介していく予定です。しばらくお待ちください。

 

 

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

 

エクセルVBAの独習には動画学習という方法もあります。 目と耳両方を使って学習することでさらに勉強効率を上げることもできると思います。
エクセルVBA初級者がUdemyで動画学習する講座おすすめ5選と無料講座の上手な使い方。

 

大村式【動画&テキスト】Excelマクロ&VBA最高のはじめ方
初めてのVBAの勉強、構えなくても気軽に始められる。
vbastudy020a
vbastudy021a

電子書籍版「大村式【動画&テキスト】Excelマクロ&VBA最高のはじめ方」をamazonで見てみる

(著者)大村あつし
(出版社)技術評論社
(税込価格)1,628円(本体1,480円+税)

学習書の新しい形です。
YouTubeと完全リンクした参考書です。入門と基礎を重点的に22本の動画で解説をしています。
ちょっとした空き時間を利用してでもスマホがあれば学習ができます。
動画は優しい語り口調で、視聴者にある意味安心感を与えてくれます。動画は5分から20分間ぐらいで22本の構成です。
文章解説と動画解説の関係性は、動画解説が主で、文章解説がサポートいう使い方もできます。

 

エクセルVBAを使って業務効率を上げて行くのに、始めのうちに知っておきたい内容を纏めています。

「VBA最速理解」の記事一覧を開く

 

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

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