書店員必見!了解書作成にWebの書誌データを使う。返品の業務改善

henwebdaeyecatcha

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

 

今回のテーマは返品了解書作成ソフト作りの中で、

返品をしたい書誌の書誌データを、Webにあるデータから入手します。

 

別にこれは、返品したい書誌が目の前にありますので、手打ちで書誌情報を入力すれば済む様な問題かもしれません。が、

何冊分も手打ちして行くのも、せっかくパソコンを使っているのですから…

自動化に取り組んでいる身としては、手書きで良いと言うのも、あまり芸がないことです。

 

この自動化は、Excel VBAを使って作成していきますが、

当ブログをお読みいただいている方であれば、お分かりかと思いますが、

「FAX発注書作成」のテーマで行ったことと同じ方法で行うことが出来ます。

 

この先へ読み進めていただく前に、「FAX発注書作成」のテーマの内容をご確認いただくには、

こちら↓をご覧ください。

「FAX発注書作成」の記事を読む

 

このテーマの前の記事についてはこちら↓になります。

返品了解書テンプレートをエクセルで作成。手書きならこれで利用可能

 

返品了解書作成に関連の記事はこちらです。

「返品了解書作成」の記事一覧を開く

 

了解書作成に使う書誌データをエクセルBOOKに落とす

 

新しくExcel bookを開きます。

 

シートの名前を変更します。

  • Sheet1を「操作ボタン」
  • Sheet2を「書誌データ貼付」
  • Sheet3を「抽出データ」
  • Sheet4を「出版社リスト」

とします。

 

「操作ボタン」シートでは、Webから取り込んだデータを出版社別に整理して、返品了解書テンプレートに書誌データを送ることを操作します。

「書誌データ貼付」シートでは、Webからのコピペしたデータの必要部分を取り出し「抽出データ」シートへデータを送ります。

「抽出データ」シートは、取り出した書誌データのストックヤードになります。

「出版社リスト」シートは、返品了解依頼先の出版社の一覧書き出し用シートになります。

 

そして このエクセルBOOKを「返品書誌情報」として保存します。

 

「書誌データ貼付」シートを作成します

 

書誌データのセル位置確認

 

Webからの書誌データをコピペする時の、必要なデータのセル位置を確認します。

 

必要な書誌データは

  • 書誌名
  • 副書名
  • 出版社
  • 著者名
  • 本体価格
  • ISBNコード

になります。

 

この項目が表示されているセル位置を登録指定するための表を作成します。

コピー元のWebサイトによってセル位置が変わりますので、

参照するWebサイトを変更するときは、その都度設定してください。

 

貼り付けには書誌データのテキストをつかんで、

コピー先(書誌データ貼付)のA列に「形式を指定して貼り付け」の「テキスト」を選択します。

日販NOCSの場合だと

 

コピーしたい書誌データをつかみます。

henpinjoho001a

 

返品書誌情報.xlsmの「書誌データ貼付」シートのA列に張り付けます。

henpinjoho002a

 

 

必要な抽出データの表示セル位置を確認し表に記入します。

 

この例ですと、それぞれの項目のセル位置は

書名・・・・・A2

副書名・・・・A9

出版社・・・・A18

著者・・・・・A21

本体価格・・・A26

ISBN・・・A33

になります。

セル位置の入力表は、G列に抽出項目をH列に入力欄を作成してください。

VBAがデータを拾っていきますので、入力欄のセル位置は変更しないでください。

 

「書誌データ貼付」シートのレイアウトはセル位置データ入力表以外は特に指定はありませんが、

例えばこのシートは、

各セル高さ(行の高さ)・・・36ピクセル

列の幅 A列・・・・・・・335ピクセル

B列~F列・・・・・・・・88ピクセル

G列~H列・・・・・・・125ピクセル

の設定になっています。

 

VBAの組み立て準備

 

この書誌データ貼付シートではペーストしたデータを「抽出データ」シートへ送り出すためのVBAを組み、

作動ボタンを設置していきます。

保存したエクセルBOOK「返品書誌情報」を起動して下さい。

 

標準モジュールを挿入します

まず、VBAを記述するため「返品書誌情報.xlsm」にModuleを挿入します。

(挿入の方法はこちら↓で確認できます。)

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

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

 

VBAの記述

 

Subプロシージャ名を「書誌データ取出し」としてください。

Sub 書誌データ取出し()
End Sub

 

変数の宣言

まず「書名」、「副書名」、「出版社」、「著者」、「本体価格」、「ISBN」を変数として宣言します。

「書名」・・・・・bn

「副書名」・・・・bsn

「出版社」・・・・shn

「著者」・・・・・wn

「本体価格」・・・pr

「ISBN」・・・isn

 

取り出した書誌データは「抽出データ」シートの何行目に張り付ければ良いかを調べる必要があります。

その行数は作業する毎に増えていきますので、その時に張り付ける行は何行目かを変数として定義します。

「データ入力行」・・・Lrow

纏めると

'変数宣言
Dim bn As String
Dim bsn As String
Dim shn As String
Dim wn As String
Dim pr As String
Dim isn As String
Dim Lrow As Long

になります。

 

「抽出データ」シートへデータを送る1

「抽出データ」シートに書誌データを送るのに、第1行目を項目行にします。

'データを送る1
 Worksheets("抽出データ").Select
  Range("A1").Value = "ISBN"
  Range("B1").Value = "書名"
  Range("C1").Value = "出版社名"
  Range("D1").Value = "著者名"
  Range("E1").Value = "本体価格"
  Range("F1").Value = "返品冊数"
  Range("G1").Value = "客注名"

データを張り付ける行は何行目かを調べるのに

A列を使って行数を計ります。

 

MEMO

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

エクセルVBA データ入力済セルの最終行番号を取得する方法

 

  LRow = Range("A1").CurrentRegion.Rows.Count + 1

 

「抽出データ」シートへデータを送る2

「書誌データ貼付」シートにフォーカスを戻して、変数に値を代入します。

'データを送る2
 Worksheets("書誌データ貼付").Select
  bn = Range("H2").Value
  bsn = Range("H3").Value
  shn = Range("H4").Value
  wn = Range("H5").Value
  pr = Range("H6").Value
  isn = Range("H7").Value

次に、この変数で指定されたセル位置にある(セル内の)データを

「抽出データ」シートの所定位置に張り付けていきます。

ISBNについては同時に表示形式を”数値”に変更します。

'書名連結
 Worksheets("抽出データ").Select
  Range("B" & LRow) = Worksheets("書誌データ貼付").Range(bn) & " " & _
   Worksheets("書誌データ貼付").Range(bsn)
'出版社
  Worksheets("書誌データ貼付").Range(shn).Copy _
   Destination:=Worksheets("抽出データ").Range("C" & LRow)
'著者
  Worksheets("書誌データ貼付").Range(wn).Copy _
   Destination:=Worksheets("抽出データ").Range("D" & LRow)'本体価格
  Worksheets("書誌データ貼付").Range(pr).Copy _
   Destination:=Worksheets("抽出データ").Range("E" & LRow)
'ISBN
  Worksheets("書誌データ貼付").Range(isn).Copy _
   Destination:=Worksheets("抽出データ").Range("A" & LRow)
   Worksheets("抽出データ").Range("A" & LRow).NumberFormatLocal = "0_ "

 

追加情報を入力できるようにする

返品数量と何のキャンセル分かの情報を入力できるようにします。

ここで新たに変数を設定する必要があります。

「返品冊数」、「客注名」を変数として宣言します。

返品冊数」・・・・hsu
「客注名」・・・・・ord

この宣言行を先ほどの宣言の下に置きます。

Dim hsu As Long
Dim ord As String

 

情報の入力方法はサクッと”InputBox”で作ってしまいます。

 

MEMO

インプットボックスについてはこちらの記事を参考にしてください。

エクセルVBA 2つのInputBox。特徴を生かした使い分け

 

'返品冊数
 Worksheets("抽出データ").Select
  msg1 = "返品冊数を記入ください。"
  title1 = "返品冊数"
   hsu = Application.InputBox(prompt:=msg1, Title:=title1, Type:=1)
    If hsu = Null Then hsu = 1
    Range("F" & LRow).Value = hsu
'客注名
  Worksheets("抽出データ").Select
    msg2 = "客注名を記入ください。"
    title2 = "客注名"
    ord = Application.InputBox(prompt:=msg2, Title:=title2, Type:=2)
    If ord = "" Then ord = ""
    Range("G" & LRow).Value = ord

 

セルのサイズの自動調整

「抽出データ」シートに必要な書誌データを移しましたが、

セル幅を自動で調節して見やすくします。

'列幅自動調節
 Worksheets("抽出データ").Select
  Columns("A:G").AutoFit

 

次の書誌データ抽出のための準備

これで、このページで行う目標は完了です。

次の返品書誌のデータ抽出のために、「書誌データ貼付」のデータをクリアーします。

'データクリアー
  Worksheets("書誌データ貼付").Range("A:A").Clear
  Worksheets("書誌データ貼付").Activate

 

「書誌データ取出し」ボタンの設置

 

MEMO

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

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

 

「書誌データ貼付」シートに、Subプロシージャー「書誌データ取出し」を作動させるボタンを設置します。

設置場所は指定はありませんが、D・E列あたりがいいと思います。

ボタンの設置方法についてはこちらでも↓確認できます。

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

 

henpinjoho004a

 

出来上がりのシートはこのようになります。

 

henpinjoho005a

 

 

完成形のVBAコード

 

henpinjoho003a

 

「書誌データ貼付」シート作成のまとめ

 

ここまで、Webからの書誌データ入手の方法を書きました。

今回は返品時の依頼書作成のためのものでしたが、返品以外にもこの書誌データをいろいろ利用することが出来ると思います。

それぞれに利用できる部分を考えられればと思います。

 

次は抽出したデータを整理整頓する作業に移ります。

エクセルVBAで返品了解書を作成。書誌データを出版社別に処理する

 

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAを独学で習得するためのポイントは?良書との出会いは重要

 

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

 

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

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

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

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

 

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

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

 

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

 

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