商品情報をWebから収集する。エクセルVBAで入力データ作成

hancus1aa

書誌データをWebから収集するエクセルVBAソフトを作ります。今回は販売管理ソフト販売王の利便性を上げるために利用します。
他のエクセルVBAソフトの部品としても利用します。

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

販売管理ソフトの販売王の効率的な利用で、今回から客注注文品の販売伝票(売上伝票)を迅速に作成する裏ワザテクニックについてもっと掘り下げていきます。

販売管理ソフト販売王で伝票を作成する場合の業務時間を短縮させる効率化計画

販売王の伝票発行の基本の流れとしての<顧客登録→商品登録→売上伝票作成→伝票発行>は省略することはできません。

ですので、この流れの中の各作業部分でそれに掛かる時間を短縮する方法を考えていくことになります。

今回の記事は、商品登録に必要な書誌データをWebページから入手して、エクセルVBAでフル活用できる方法を説明します。「商品登録」をする場面での時短ワザです。

販売商品を販売王に直接データ打ち込みするのではなく、先に、販売データを外部でCSV化して販売王にインポートするという方法をとります。
販売商品のデータを一度にまとめてCSVデータとして販売王にインポートしたほうが効率的な作業が出来るというわけです。

今までの伝票発行の方法にもよりますが、この方法で販売王を使って伝票作成した場合、
恐らく、一顧客10品目の伝票作成でしたら伝票作成まで作業時間は10分掛からないでしょう。

以前と比べて格段の時短作業になっているのではないでしょうか。

Webの商品情報をCSVデータにして販売王にインポート

keyborder001a
販売王へのデータ導入の流れ

① 販売商品の商品データ(書誌データ)を取り出す

  • 商品注文画面から商品データ(書誌データ)を吸い上げる。(一品ずつ手打ちで情報入力はしない)
  • エクセルVBAコードを記述し利用可能な状態にする。

② 販売王が要求する必要な書誌データを付加する

③ 作成したエクセルシートをCSVデータ化して所定場所に名付けした上で保存する

④ 販売王のテキストデータ入力画面で入力作業して完了

この様に大きく4つのステップで、販売王に効率的に販売商品のデータ一度にまとめてCSVデータでインポートすることができます。

顧客データを販売王に登録する場合

顧客データについての販売王への一括入力に関しては、販売王の初期導入時にあることかもしれません。その時は今回同様エクセルVBAを使って行うこととなります。

今回の記事内容を実際に行う中でも、個別に顧客データを追加しないといけないことがあるでしょう。

顧客データの追加の場合は、販売王の顧客入力窓から直接データ入力したほうが効率的にも作業的にも速いです。(大量の入力で有れば別ですが・・・)

なので、この記事テーマの中では、顧客データの外部CSVデータからの一括のインポートについては掲載していません。

また改めて別の機会で説明したいと思います。

商品情報を書誌データにして取り込むVBA

kanseizaikoborder001

今回この記事では、まず商品登録に必要な書誌情報をWebページから入手し、データ化する方法を説明します。

Webページから書誌のデータの取り込みを行います。

取り出し元のWebページによってエクセルVBAコードを変更する必要があります。

この手法は、エクセルVBAでつくる他のソフトにも利用することができます。

それでは順を追って説明をしていきます。

エクセルブックの体裁については、もちろんVBAコードで作成することが出来ます。ただ、コードを書いて実行するよりも、手作業で行った方が実務的に早いので、「シート名」「ブック名」はVBAコード処理では行わないでおきます。

シート名を変更します

新しいエクセルBOOKを開きます。

シート名を

Sheet1 → 「操作ボタン」
Sheet2 → 「貼り付け」
Sheet3 → 「作業シート」

 

とします。

Sheet名のタブをダブルクリックすると名前の変更ができる状態になります。

BOOK名を「書誌データ抽出」として変更保存

「ファイル」タブ→「名前を付けて保存」をクリック。

保存場所は分かり易い場所へ、

BOOK名は「書誌データ抽出.xlsm」としてください。

エクセルVBA保存のため、マクロ有効BOOKで保存してください。

販売商品の書誌データ抜き出しのエクセルVBAを記述します

Webからの書誌データ取り出しについては、取り出し元のWebページによって、

エクセルVBAのコードを変える必要があります。

日販NOCSからの書誌データ取り出し

Webページに表示されたテキストの必要個所をコピーして、

hanbaicustm1001a

エクセルの「貼り付け」シートにテキストのみペーストします。

hanbaicustm1002akai

そしてその貼り付けられた書誌データの内、必要な書誌データのセル番号を指定してピッキングしていきます。

日販のWebに関しては、「出版社」と「本体価格」の書誌データ取り出しについては余分な文字の削除などが必要です。

取り出した書誌データは「作業シート」に書き出しします。

日販NOCSからの書誌データ取り出しのエクセルVBAコード

VBA
Option Explicit

Sub NOCSデータ登録()
    Dim nR As Long
    Dim L As Long, M As Long, kkkm As Variant, n As Long, kkk As Variant
    Dim spa As String, sp As String
        Worksheets("貼り付け").Select
        Worksheets("作業シート").Select
        If Range("B1").Value <> "書名" Then
            Range("A1").Value = "ISBN"
            Range("B1").Value = "書名"
            Range("C1").Value = "出版社"
            Range("D1").Value = "著者"
            Range("E1").Value = "本体価格"
        End If
        nR = Range("A1").CurrentRegion.Rows.Count + 1
        With Worksheets("貼り付け")
    '書名
            .Range("A1").Copy _
                Destination:=Worksheets("作業シート").Range("B" & nR)
    '出版社
            spa = Replace(.Range("B6"), "発行所=", "")
            sp = Replace(spa, "発売所=", "")
            Worksheets("作業シート").Range("C" & nR) = Trim(sp)
    '著者
            .Range("B7").Copy _
                Destination:=Worksheets("作業シート").Range("D" & nR)
    '本体価格
            L = Len(.Range("B8"))
            M = InStr(.Range("B8"), "体")
            kkkm = Right(.Range("B8"), L - M)
            n = InStr(kkkm, "円")
            kkk = Left(kkkm, n - 1)
            Worksheets("作業シート").Range("E" & nR) = kkk
    'ISBN
            .Range("B9").Copy _
                Destination:=Worksheets("作業シート").Range("A" & nR)
            Worksheets("作業シート").Range("A" & nR).NumberFormatLocal = "0_ "
            Worksheets("作業シート").Cells.EntireColumn.AutoFit
    '貼り付けシートの後処理
            .Range("A:F").Clear
            .Activate
        End With
        Range("A1").Select
End Sub

こちらのエクセルVBAコードを「書誌データ抽出.xlsm」のModule1に「NOCSデータ登録()」として保存してください。

Moduleの起動法はこちらから確認してください。↓

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

Books 出版書誌データベースからのデータ取り出し

閲覧ブラウザは「Google Chrome」の場合です。

Webページに表示されたテキストの必要個所のコピー

hanbaicustm1003akai

エクセルの「貼り付け」シートに「テキストのみ」としてペースト

hanbaicustm1004akai

出版書誌データベースの場合は、書籍名、副題、内容紹介、著者略歴など、検索した書籍によって、表示される内容の情報量が大きく異なります。

書籍名と副題を区別する項目名表示がありませんので、VBAコードによる自動判別が出来ません。

なので、書籍データを「貼り付け」シートにペーストしたときに、その都度、書籍名のセルをアクティブにしておくことでVBAコードで読み取れるようにします。

Books 出版書誌データベースからの書誌データ取り出しのエクセルVBAコード

VBA
Sub 出版書誌データ登録Chrome()
    Dim hR, hAR As Long, nRr As Long
    Dim s As Long
    Dim tyoR As Long, ISR As Long, syuR As Long, prR, hakR As Long
    Dim tyo As String, pri As Long, pr As String, syu, red As String
    Dim ISa As Variant
    'コード冒頭
        Worksheets("貼り付け").Select
        hR = Cells(Rows.Count, 1).End(xlUp).Row
        hAR = ActiveCell.Row
        For s = 1 To hR
            If InStr(Range("A" & s), "著:") > 0 Then tyoR = s
            If InStr(Range("A" & s), "ISBN") > 0 Then ISR = s
            If InStr(Range("A" & s), "出版社") > 0 Then syuR = s
            If InStr(Range("A" & s), "定価") > 0 Then prR = s
            If InStr(Range("A" & s), "発売日") > 0 Then hakR = s
        Next s
        Worksheets("作業シート").Select
        If Range("B1").Value <> "書名" Then
            Range("A1").Value = "ISBN"
            Range("B1").Value = "書名"
            Range("C1").Value = "出版社"
            Range("D1").Value = "著者"
            Range("E1").Value = "本体価格"
            Range("F1").Value = "発売日"
        End If
        nRr = Range("A1").CurrentRegion.Rows.Count + 1
        On Error Resume Next
    '書名
        Worksheets("貼り付け").Range("A" & hAR).Copy _
            Destination:=Worksheets("作業シート").Range("B" & nRr)
    '出版社
        syu = Replace(Worksheets("貼り付け") _
                                .Range("A" & syuR), "出版社:", "")
        Worksheets("作業シート").Range("C" & nRr) = Trim(syu)
    '著者
        tyo = Replace(Worksheets("貼り付け") _
                                .Range("A" & tyoR), "著:", "")
        Worksheets("作業シート").Range("D" & nRr) = Trim(tyo)
    '本体価格
        pr = Replace(Worksheets("貼り付け") _
                            .Range("A" & prR), "円(本体)", "")
        pri = Replace(pr, "定価:", "")
        Worksheets("作業シート").Range("E" & nRr) = Trim(pri)
    'ISBN
        ISa = Replace(Worksheets("貼り付け") _
                                .Range("A" & ISR), "ISBN:", "")
        Worksheets("作業シート").Range("A" & nRr) = ISa
        Worksheets("作業シート").Range("A" & nRr) _
                                        .NumberFormatLocal = "0_ "
    '発売日
        red = Replace(Worksheets("貼り付け") _
                                .Range("A" & hakR), "発売日:", "")
        Worksheets("作業シート").Range("F" & nRr) = Trim(red)
        Worksheets("作業シート").Cells.EntireColumn.AutoFit
        On Error GoTo 0
        Worksheets("貼り付け").Range("A:A").Clear
        Worksheets("貼り付け").Activate
        Range("A1").Select
End Sub

こちらのエクセルVBAコードを「書誌データ抽出.xlsm」のModule1に「出版書誌データ登録Chrome()」として保存してください。

Moduleの起動法はこちらから確認してください。↓

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

まとめ

keyborder001a

このエクセルVBAコードで、Webページからの書誌データ取り出しが簡単に行えるようになります。

この書誌データ取り出し項目は、「ISBN」「書名」「出版社」「書名」「本体価格」です。

このエクセルVBAは、販売王の一括商品登録のために作成する”販売商品の外部のCSVデータをインポート”のためのソフトの部品として利用することになります。

Webページからの書誌データ取り出しのこの手法は、エクセルVBAでつくる他の色々なソフトにも利用することができます。

単純には、それぞれのソフトにここで作成したエクセルVBAコードをそれぞれ埋め込んでいけばOKということです。

けれども、この手法は取り出し元のWebページの仕様に依存していますので、
そのWebページにデザインなどの変更があった場合はその都度
埋め込んだソフトそれぞれに、VBAコードを変更しないといけないことになります。

ですので、そういった大変さや不便さを軽減するために、
今回作成した「書誌データ抽出.xlsm」というエクセルBOOKを共通部品として、
さらに他のエクセルVBAでつくるソフトにも利用していきます。

メンテナンスが必要な時にはこの「書誌データ抽出.xlsm」のエクセルVBAコードを変更すればOKということになります。

次回は販売王にインポートできる書誌データをエクセルVBAで作成した

完成形のCSVデータのエクセルシートを作り上げます。

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

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

Excelマクロ&VBA超入門 今すぐ使えるかんたんぜったいデキます!
エクセルVBAを初めて勉強するときに効く
vbastudy016a
vbastudy017a

電子書籍版「Excelマクロ&VBA超入門」をamazonで見てみる

(著者)井上香緒里
(出版社)技術評論社
(税込価格)1,738円(本体1,580円+税)

マクロとVBAについて学んでみたいけれど,いまひとつ自信がないという方のために,ひとつひとつの操作を丁寧に解説する1冊目の教科書です。
エクセルVBAの「い・ろ・は の い」から説明していますので、安心して取り組める参考書です。
例題として、
  • 「データ消去」「シートのコピー」「メッセージボックス」の機能を持つお小遣い帳
  • 「入力フォーム」の機能を持った歩数表
2つの題材ファイルを作成しながら,マクロとVBAの基本を学習していきます。

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

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

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

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