Webの商品情報をCSVで販売王に登録完了させるVBAコードの組み方

hancus2eyecatch

販売王の商品登録を外部データからインポートします。

最初に行う商品登録のデータ入力を効率アップさせる方法になります。
データ入力に非常に時間が掛かる販売管理ソフトの難点の解決策です。

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

 

今回のテーマは、

先回解説しました「書誌データ抽出.xlsm」をVBAコードのパーツで使って、販売商品の商品データ(書誌データ)を販売王にインポートする方法を完成させます。

 

この効果として、販売王へのデータ入力を効率よく行うことで伝票作成の業務時間を大幅に短縮させることができます。

そして更に販売王の販売伝票(売上伝票、納品書、請求書)の一括データ入力・作成につなげていきます。

 

先回の記事を確認する。↓

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

 

販売データ入力に関連する記事はこちらになります。
「販売伝票作成」の記事一覧を開く

 

CSVデータの商品情報を販売王に登録するVBAの組み方

hancustborder1

 

先回作成した「書誌データ抽出.xlsm」を、今回作成するVBAコードのパーツとして利用します。

さらに、販売王の商品登録について、他に入力しなければならない項目を付け加えます。

販売王の商品登録に必要なデータを揃え、エクセルシートに転記し、それをCSVデータ化します。

 

販売王の「ツール」にある「外部テキストデータ入力」機能を利用して、そのデータを販売王内に取り込みます。

 

こうすることで、Webにある販売商品の外部データ(書誌データ)を販売王にインポートすることができます。

 

販売王の商品登録CSVデータ作成のエクセルVBA概要

 

新しくエクセルBOOKを開いて、CVS作成用のエクセルBOOKを作ります。

先回作成したエクセルBOOK「書誌データ抽出.xlsm」をそのBOOKの標準モジュールに埋め込みます。

Webより取り出した書誌データがシートに書き込まれますので、

そこに販売王が要求しているデータを付け加え必要なデータを揃えます。

最後に、作成したデータシートをCSVデータ化して完了です。

 

まず新しいエクセルBOOKを作成します

 

新しくエクセルBOOKを「販売データ入力.xlsm」として作成します。

 

新しいエクセルBOOKのシート名を変更します

新しいエクセルBOOKを開いてシート名を

Sheet1 を 「操作ボタン」

Sheet2 を 「貼り付け」

Sheet3 を 「作業シート」

Sheet4 を 「商品CSV作成」

とします。

 

BOOK名を「販売データ入力」として保存します

「ファイル」タブから「名前を付けて保存」をクリックします。

BOOK名は「販売データ入力.xlsm」としてください。

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

 

このBOOKの保存場所については、「販売王入力」というフォルダを作ってそこに入れてください。

 

このソフト「販売データ入力.xlsm」のファイルツリーを説明

 

このソフトで利用するフォルダやファイルは設置する場所を決めていますので注意してください。

販売王で登録した基本情報を保存したファイルや作成した外部データCSVを保存するフォルダのファイルツリーはこのようになります。

 

hanbaicustsyo002na

 

「書誌データ入力」フォルダ

「販売王入力」フォルダ内に

「書誌データ入力」フォルダを作って、先回作成した「書誌データ抽出.xlsm」を入れてください。

 

「区分登録」フォルダ

「区分登録」フォルダを作って「商品区分登録.CSV」を保存します。

このCSVデータは販売王で区分登録を行った「商品区分1」のデータをCSV形式のエクスポートで「商品区分録.CSV」として保存します。

データのエクスポートの方法は

販売王のツールタブから「テキストデータ出力」で表示される窓の「出力形式名称」のプルダウンメニューで「区分」を選択します。

下の「区分種別」で「商品区分1」を選択してください。

出力ファイル名を「商品区分登録」で保存先を「区分登録」フォルダにしてください。

hanbaicustsyo003a

 

「販売王商品登録CSV」フォルダ

「販売王商品登録CSV」フォルダは、これからエクセルVBAで作成する商品登録のCSVデータを保存する用のフォルダです。

保存時のファイル名は「商品登録_○○年月日-保存時時分」となります。

○○は「商品区分1」で登録した区分名です。

同じファイルでも保存時の時分が変われば別ファイルとして保存されます。

 

商品登録のエクセルVBAコードを記述します

 

「販売データ入力.xlsm」のVBEでModuleを挿入します。

Moduleの挿入方法はこちらで確認してください。↓

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

 

MEMO

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

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

 

Module1には「書誌データ抽出.xlsm」で作成したプロシージャーの起動コードを記述する

Module1に「書誌データ抽出.xlsm」のプロシージャー起動コードを埋め込みます。

 

NOCS利用のコード

Sub 書誌データNOCS入手()

    Workbooks.Open (ThisWorkbook.Path & "\書誌データ入力\書誌データ抽出.xlsm")
    Workbooks("販売データ入力.xlsm").Activate
    Application.Run "書誌データ抽出.xlsm!NOCSデータ登録"
    Workbooks("書誌データ抽出.xlsm").Close False
End Sub

 

出版書誌データベース利用のコード

使っているブラウザによってエクセルシートにコピペした時の表示状態が異なります。

Microsoft Edgeの場合

Sub 書誌データ出版書誌ME入手()

    Workbooks.Open (ThisWorkbook.Path & "\書誌データ入力\書誌データ抽出.xlsm")
    Workbooks("販売データ入力.xlsm").Activate
    Application.Run "書誌データ抽出.xlsm!出版書誌データ登録Edge"
    Workbooks("書誌データ抽出.xlsm").Close False
End Sub

Internet Explorer11の場合

Sub 書誌データ出版書誌IE11入手()

    Workbooks.Open (ThisWorkbook.Path & "\書誌データ入力\書誌データ抽出.xlsm")
    Workbooks("販売データ入力.xlsm").Activate
    Application.Run "書誌データ抽出.xlsm!出版書誌データ登録IE11"
    Workbooks("書誌データ抽出.xlsm").Close False
End Sub

サブルーチン実行後、「販売データ入力.xlsm」の「作業シート」に抽出したデータが入力されています。

 

Module2に販売王入力に対応したデータに整えるVBAコードを記述する

Module1で実行した結果を利用して、「商品CSV作成」シートに販売王が要求する商品データを揃えます。

INPUTBOX(入力窓)で3項目の入力を要求しています。

商品登録ID番号の開始番号、商品区分(1)・(2)のコード番号をデータ入力してください。

販売王の要求データ数は60項目になります。

この中で必須項目ではない項目も多くあります。ここでは最低限の必要項目のみ設定しています。

 

MEMO

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

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

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

2つのインプットボックス。関数とメソッド、特徴を生かした使い分け

For~Nextの使い方については、この記事も参考にしてください。

エクセルVBA!For~Nextの入れ子ループを最速に理解する

 

Sub 商品登録csv作成マクロ()

Dim LRowa As Long
Dim NOM As Long
Dim NOMa As Long
Dim NOMb As Long
Dim NOMc As Long
Dim Msga As String
Dim Msgb As String
Dim Msgc As String
Dim myTitle As String, SYO As String

    Worksheets("商品CSV作成").Activate
    Cells.Select
    Selection.Clear
    
    Worksheets("作業シート").Activate
    LRowa = Range("A1").CurrentRegion.Rows.Count - 1

    Worksheets("商品CSV作成").Activate
    Range("A1").Select
    Msga = "IDスタートナンバーを入力してください。"
    myTitle = "商品登録"
    NOM = Application.InputBox(prompt:=Msga, Title:=myTitle, Type:=1)
    
    Msgb = "商品区分(1)ナンバーを入力してください。"
    myTitle = "商品登録"
    NOMb = Application.InputBox(prompt:=Msgb, Title:=myTitle, Type:=1)
    
    Msgc = "商品区分(2)ナンバーを入力してください。"
    myTitle = "商品登録"
    NOMc = Application.InputBox(prompt:=Msgc, Title:=myTitle, Type:=1)
    
    For i = 0 To LRowa - 1
    
        NOMa = NOM + i
        Cells(i + 2, 1).Value = NOMa
        Cells(i + 2, 9).Value = NOMb
        Cells(i + 2, 10).Value = NOMc
        
        Worksheets("作業シート").Activate
        SYO = Cells(i + 2, 2).Value
        Worksheets("商品CSV作成").Activate
        Cells(i + 2, 2).Value = Left(SYO, 20)
        Cells(i + 2, 4).Value = Left(SYO, 7)
        Cells(i + 2, 5).Value = "1"

        Worksheets("作業シート").Activate
        Cells(i + 2, 5).Copy
        Worksheets("商品CSV作成").Activate
        Cells(i + 2, 30).PasteSpecial Paste:=xlValues
        Cells(i + 2, 31).PasteSpecial Paste:=xlValues
   Next i
        Cells(1, 1).Value = "商品台帳.商品コード"
        Cells(1, 2).Value = "商品台帳.商品名"
        Cells(1, 3).Value = "商品台帳.商品名フリガナ"
        Cells(1, 4).Value = "商品台帳.商品名略称"
        Cells(1, 5).Value = "商品台帳.商品種別"
        Cells(1, 6).Value = "商品台帳.拡張商品コード"
        Cells(1, 7).Value = "商品台帳.イニシャルキーカナ(商品)"
        Cells(1, 8).Value = "商品台帳.イニシャルキー英字(商品)"
        Cells(1, 9).Value = "商品台帳.商品区分1"
        Cells(1, 10).Value = "商品台帳.商品区分2"
        Cells(1, 11).Value = "商品台帳.商品区分3"
        Cells(1, 12).Value = "商品台帳.付箋1"
        Cells(1, 13).Value = "商品台帳.付箋2"
        Cells(1, 14).Value = "商品台帳.規格・型番使用区分"
        Cells(1, 15).Value = "商品台帳.規格・型番"
        Cells(1, 16).Value = "商品台帳.カラー使用区分"
        Cells(1, 17).Value = "商品台帳.カラー"
        Cells(1, 18).Value = "商品台帳.サイズ使用区分"
        Cells(1, 19).Value = "商品台帳.サイズ"
        Cells(1, 20).Value = "商品台帳.数量単位"
        Cells(1, 21).Value = "商品台帳.販売入数"
        Cells(1, 22).Value = "商品台帳.仕入入数"
        Cells(1, 23).Value = "商品台帳.計算式コード"
        Cells(1, 24).Value = "商品台帳.ワレモノ印刷"
        Cells(1, 25).Value = "商品台帳.ナマモノ印刷"
        Cells(1, 26).Value = "商品台帳.主要仕入先コード1"
        Cells(1, 27).Value = "商品台帳.主要倉庫コード1"
        Cells(1, 28).Value = "商品台帳.発注ロット"
        Cells(1, 29).Value = "商品台帳.リードタイム"
        Cells(1, 30).Value = "商品台帳.標準小売単価(上代)"
        Cells(1, 31).Value = "商品台帳.標準売値"
        Cells(1, 32).Value = "商品台帳.売値1"
        Cells(1, 33).Value = "商品台帳.売値2"
        Cells(1, 34).Value = "商品台帳.売値3"
        Cells(1, 35).Value = "商品台帳.原単価"
        Cells(1, 36).Value = "商品台帳.最低販売警告見積"
        Cells(1, 37).Value = "商品台帳.最低販売警告受注"
        Cells(1, 38).Value = "商品台帳.最低販売警告売上"
        Cells(1, 39).Value = "商品台帳.最低販売価格"
        Cells(1, 40).Value = "商品台帳.標準仕入価格"
        Cells(1, 41).Value = "商品台帳.仕入値1"
        Cells(1, 42).Value = "商品台帳.仕入値2"
        Cells(1, 43).Value = "商品台帳.仕入値3"
        Cells(1, 44).Value = "商品台帳.仕入伝票最新単価区分"
        Cells(1, 45).Value = "商品台帳.販売時課税区分"
        Cells(1, 46).Value = "商品台帳.仕入時課税区分"
        Cells(1, 47).Value = "商品台帳.簡易課税商品区分"
        Cells(1, 48).Value = "商品台帳.在庫管理有無"
        Cells(1, 49).Value = "商品台帳.在庫管理開始日"
        Cells(1, 50).Value = "商品台帳.在庫評価法"
        Cells(1, 51).Value = "商品台帳.平均原価"
        Cells(1, 52).Value = "商品台帳.最終仕入値"
        Cells(1, 53).Value = "商品台帳.在庫繰越基準日"
        Cells(1, 54).Value = "商品台帳.基準日原単価"
        Cells(1, 55).Value = "商品台帳.在庫繰越数"
        Cells(1, 56).Value = "商品台帳.上限在庫数"
        Cells(1, 57).Value = "商品台帳.適正在庫数"
        Cells(1, 58).Value = "商品台帳.最低販売周期"
        Cells(1, 59).Value = "商品台帳.周期当たり販売数"
        Cells(1, 60).Value = "商品台帳.受託商品区分"
        
    Worksheets("操作ボタン").Activate
    Range("A1").Select    
End Sub

 

Module3に整えたデータをCSV化するコードを記述する

Module2で作成した「商品CSV作成」シートを販売王にインポートできるテキストデータ形式に変更して書き出しを行います。

作成したCSVデータの保存フォルダを選択する窓が開きますので、

「販売王商品登録CSV」フォルダを選択してください。

 

MEMO

Match関数について詳しくはこちらになります。

エクセルVBAで使うMatch関数 活用度アップでテッパン関数に!

フォルダをダイアログ指定する方法はこちらの記事を参考にしてください。

Excel VBA 保存先フォルダをダイアログ指定で変数化

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

Format関数を書式設定のテッパン関数にする!実務での書式と重要5例

 

Sub データCSV化()

    Dim syID As String
    Dim KUD As Range
    Dim NOMb As Long
    Dim FN As String
    Dim Shell As Object
    Dim FolderPath As String
    
    Workbooks("販売データ入力.xlsm").Activate
    Worksheets("商品CSV作成").Select
    Cells.Select
    Selection.Copy
    NOMb = Range("I2").Value
    Range("A1").Select
    
   Workbooks.Open (ThisWorkbook.Path & "\区分登録\商品区分登録.csv")

   Set KUD = Workbooks("商品区分登録.csv").Worksheets("商品区分登録").Range("A:A")
    
    Workbooks("商品区分登録.csv").Activate
    Worksheets("商品区分登録").Select
      v = Application.WorksheetFunction.Match(NOMb, KUD, 0)
      syID = Range("D" & v).Value
    ActiveWorkbook.Close

    Set Shell = CreateObject("Shell.Application") _
        .BrowseForFolder(0, "フォルダを選択してください", 0, ThisWorkbook.Path & "\販売王商品登録CSV")
    
    If Shell Is Nothing Then
        FolderPath = ""
    Else
        FolderPath = Shell.Items.Item.Path
    End If

    Workbooks("販売データ入力.xlsm").Activate
    ChDir ThisWorkbook.Path & "\販売王商品登録CSV"
    Workbooks.Add
    Cells.Select
    ActiveSheet.Paste
    Range("A1").Select
    FN = Format(Now(), "yymmdd-hhmm")
    ActiveWorkbook.SaveAs Filename:=FolderPath & "\" & "商品登録_" & syID & FN & ".csv", _
        FileFormat:=xlCSV, CreateBackup:=False
    Range("A1").Select
    ActiveWorkbook.Close
    Worksheets("操作ボタン").Select
    Range("A1").Select
    
End Sub

 

「貼り付け」シートに起動ボタンを設置します

 

Webから入手した書誌データは、必要部分を取り出して「作業シート」に移します。

その作業をおこなうための起動ボタンを設置します。

 

hanbaicustsyo006na

 

マクロの登録で、

「NOCSからの商品登録」はModule1の「書誌データNOCS入手」

「出版書誌からの商品登録Microsoft Edge」はModule1の「書誌データ出版書誌ME入手」

「出版書誌からの商品登録IE11」はModule1の「書誌データ出版書誌IE11入手」

のプロシージャーをそれぞれセットしてください。

実際の動作をチェック

hanbaicustsyo007

NOCSから商品情報を取得

hanbaicustsyo008

「NOCSから商品登録」ボタンをクリック

「操作ボタン」シートに起動ボタンを設置します

 

エクセルVBA起動のためのボタンを、「操作ボタン」シートに作ります。

この様に作ります。

hanbaicustsyo005na

 

Module4にコマンドボタンに対応した起動コードを記述する

このVBAコードはModule4に記述します。

VBAコード参考記事
ここの説明で出てくるVBAコードの参考にしていただける記事です。

vbacalleyecatch Callステートメントはプロシージャーの部品化に必須項目 エクセルVBA最速理解

 

Sub 商品登録CSV()
Module2.商品登録csv作成マクロ
Module3.データCSV化
End Sub

ボタンの設置方法については、

「データ抽出ボタンを設置する」で確認することができます。

 

実際の動作をチェック

hanbaicustsyo009

販売王の商品登録番号を入力

hanbaicustsyo010

商品区分(1)番号を入力

hanbaicustsyo011

商品区分(2)番号を入力

hanbaicustsyo012

CSV商品登録出力

 

Webの商品情報を販売王に登録するVBAコードのまとめ

 

このソフトの一番の利便性は販売王において、

同じ区分登録の顧客に対しての多数の種類の商品を、大量に一括登録できるようになることです。

気の遠くなるような1種類毎の登録作業からこれで解放されます。

 

販売王への商品登録を外部データから行うというテーマはこれで完了ですが、書誌以外の商品を登録する方法もこの作業の応用で可能です。

そして次の段階は、

販売伝票(売上伝票)の作成のための販売王への外部販売データ登録になります。

それには新たなエクセルBOOKを作成するのではなく、この今作成したBOOK「販売データ入力.xlsm」の機能追加として行っていきます。

 

次の記事からは売上伝票作成についてです。

 

 

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

 

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

 

改訂新版 てっとり早く確実にマスターできるExcel VBAの教科書
定番参考書の改定新版が、動画付きになりもっと分かり易くなった
vbastudy022a
vbastudy023a

電子書籍版「改訂新版 てっとり早く確実にマスターできるExcel VBAの教科書」をamazonで見てみる

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

30冊を超えるExcelのマクロやVBAの解説書を執筆してきた著者による考え抜かれた本書の内容と構成。
独創的な解説手法で必ずExcel VBAが理解できます!
初級からの参考書ですが、より実践的切り口での解説をしています。
QRコードから操作の流れを動画(無音です)で確認することもできるようになりました。
文章解説と動画との関係性は、主は文章での解説、サポートが動画になります。

 

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

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

 

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

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