商品登録する情報をWebから収集する。VBAを使って手入力をしない時短策

hancus1aa

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

 

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

 

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

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

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

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

 

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

 

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

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

 

前の記事を確認する。↓

販売王のデータ入出力形式をチェックして利用法を理解する。

 

販売データ入力に関連する記事はこちらになります。

「販売伝票作成」の記事一覧を開く

 

商品登録する情報をCSVデータにして販売王にインポートする

keyborder001a

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

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

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

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

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

 

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

 

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

 

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

今回の記事テーマの中でも、個別に顧客データを追加しないといけないことがあると思います。

ただ今回のそういった場合は、恐らく販売王の顧客入力窓から直接データ入力したほうが作業的にも効率的かと思います。(大量の数の入力ではないかと思います。)

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

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

 

商品登録する商品情報を書誌データとして取り込むVBA

kanseizaikoborder001

 

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

 

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

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

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

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

 

シート名を変更します

 

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

シート名を

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

 

とします。

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

 

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

 

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

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

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

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

 

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

 

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

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

 

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

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

hanbaicustm1001a

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

hanbaicustm1002a

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

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

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

 

MEMO

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

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

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

Replace関数は文字列を置換・削除する利用度の高い関数

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

Len関数・LenB関数で文字列の文字数を知る方法。使用例で解説します

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

Instr関数・InstrRev関数は文字列を検索する。ファイルパス取得に威力

Mid関数、Right関数、Left関数についてはこちらを参考にしてください。

Mid関数・Right関数・Left関数は文字列操作の基本。使用例で解説します

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

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

 

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

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
    Range("A:A").NumberFormatLocal = "0_ "
    
    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
    
'書名
    Worksheets("貼り付け").Range("A2").Copy _
        Destination:=Worksheets("作業シート").Range("B" & nR)
'出版社
    spa = Replace(Worksheets("貼り付け").Range("A18"), "発行所=", "")
    sp = Replace(spa, "発売所=", "")
    Worksheets("作業シート").Range("C" & nR) = Trim(sp)
'著者
    Worksheets("貼り付け").Range("A21").Copy _
        Destination:=Worksheets("作業シート").Range("D" & nR)
'本体価格
    L = Len(Worksheets("貼り付け").Range("A26"))
    M = InStr(Worksheets("貼り付け").Range("A26"), "体")
    kkkm = Right(Worksheets("貼り付け").Range("A26"), L - M)
    n = InStr(kkkm, "円")
    kkk = Left(kkkm, n - 1)
    Worksheets("作業シート").Range("E" & nR) = kkk
'ISBN
    Worksheets("作業シート").Range("A" & nR).NumberFormatLocal = "0_ "
    Worksheets("貼り付け").Range("A33").Copy _
        Destination:=Worksheets("作業シート").Range("A" & nR)
    Worksheets("作業シート").Cells.EntireColumn.AutoFit
        
    Worksheets("貼り付け").Range("A1:A65").Clear
    Worksheets("貼り付け").Activate
    Range("A1").Select
    
End Sub

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

 

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

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

 

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

閲覧ブラウザは「Microsoft Edge」の場合です。

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

hanbaicustm1003a

 

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

hanbaicustm1004a

 

出版書誌データベースを利用する場合は、

エクセルの「貼り付け」シートに貼り付けられる書誌データのセル位置がその都度変動します。

ピッキングする書誌データの一行上にはその書誌データの項目が表示されているので、それをガイドとしてセル位置を特定します。

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

 

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

Sub 出版書誌データ登録Edge()

Dim hR As Long, nRr As Long
Dim s As Long
Dim tyoR As Long, ISR As Long, syuR As Long, prR As Long
Dim tyo As String, pri As Long

    Worksheets("貼り付け").Select
    Range("A:A").NumberFormatLocal = "0_ "
    hR = Cells(Rows.Count, 1).End(xlUp).Row
    
    For s = 1 To hR
        If InStr(Range("A" & s), "著:") > 0 Then tyoR = s
        If Range("A" & s) = "ISBN" Then ISR = s + 1
        If Range("A" & s) = "出版社" Then syuR = s + 1
        If Range("A" & s) = "定価" Then prR = s + 1
    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 = "本体価格"
    End If
    
    nRr = Range("A1").CurrentRegion.Rows.Count + 1
    
'書名
    Worksheets("貼り付け").Range("A2").Copy _
        Destination:=Worksheets("作業シート").Range("B" & nRr)
'出版社
    Worksheets("貼り付け").Range("A" & syuR).Copy _
        Destination:=Worksheets("作業シート").Range("C" & nRr)
'著者
    tyo = Replace(Worksheets("貼り付け").Range("A" & tyoR), "著:", "")
    Worksheets("作業シート").Range("D" & nRr) = Trim(tyo)

'本体価格
    pri = Replace(Worksheets("貼り付け").Range("A" & prR), "円(本体)", "")
    Worksheets("作業シート").Range("E" & nRr) = Trim(pri)

'ISBN
    Worksheets("作業シート").Range("A" & nRr).NumberFormatLocal = "0_ "
    Worksheets("貼り付け").Range("A" & ISR).Copy _
        Destination:=Worksheets("作業シート").Range("A" & nRr)
    Worksheets("作業シート").Cells.EntireColumn.AutoFit
            
    Worksheets("貼り付け").Range("A:A").Clear
    Worksheets("貼り付け").Activate
    Range("A1").Select
    
End Sub

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

 

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

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

 

閲覧ブラウザが「Internet Explorer11」の場合

Microsoft Edgeとは表示内容が変わりますので、新たなコードを作成しました。

Sub 出版書誌データ登録IE11()

Dim hR As Long, nRr As Long
Dim s As Long
Dim tyoR As Long, ISR As Long, syuR As Long, prR As Long
Dim tyo As String, pri As Long, pr As String, syu As String
Dim ISa As Variant

    Worksheets("貼り付け").Select
    Range("A:A").NumberFormatLocal = "0_ "
    hR = Cells(Rows.Count, 1).End(xlUp).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
    
'書名
    Worksheets("貼り付け").Range("A5").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).NumberFormatLocal = "0_ "
    Worksheets("作業シート").Range("A" & nRr) = ISa
    
    Worksheets("作業シート").Cells.EntireColumn.AutoFit
            
    Worksheets("貼り付け").Range("A:A").Clear
    Worksheets("貼り付け").Activate
    Range("A1").Select
    
End Sub

VBAを使って商品情報を取り込む時短策のまとめ

keyborder001a

 

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

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

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

 

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

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

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

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

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

 

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

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

 

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

 

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

 

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

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

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

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

 

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

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

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

 

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