レシピ作成システム機能強化
業者名一括置換
■レシピ作成システムで、現在までに設定されている業者名を実際の取扱業者名に変更する機能を追加しました。
■下図はレシピシステムを開いて「設定」シートを開いた画面です
■ F列の「業者名変更」ボタンを押して変更フォームが開きます。
■フォーム左側のリストボックスから変更する業者のリストをクリックします。
■ここでは「△▲鶏卵」の行を選択しました。
■右上テキストボックスに同じ名前が選択状態で表示するので、変更する名前を書き込んで「変更確認」ボタンをクリックします。
■ここでは「てすと卵屋さん」としました
■右下のラベルに変更する状態を表示するので「変更を確定する」ボタンをクリックします。
■ ほんの数秒で業者名変更が終了します。
■これだけで、レシピシステムで使用しているすべてのプログラム当該業者名が変更になります。そのほかにも、既に作成済みのレシピ中で使用している業者名や業者別発注システムで使用している業者名も自動的に変更されます。
下図は業者別発注書システムの画面です
業者名置換機能の仕様
①レシピ作成システム内のSheet1(作成済みレシピの食材詳細データ)にある業者名の置換
②レシピ作成システム内のSheet2(設定シート)内の業者名リストの置換
③食材アイテム(食品成分表)データ「item_revi8.csv」中の業者名の置換
④レシピシステムでの業者名変更情報を業者別発注システム側へ知らせるためのサインデータ書き出し
⑤ 業者別発注システムで④のサインを受け取って、シートタブに設定している業者名や、作成される発注データの業者名ごとの振り分けに使用する業者名の設定値等も置換
データ置換コード1
Sub resiGyousya(sapuName As String, newName As String) 'Sheet1レシピデータベース内の業者名を置換 Dim max As Long Dim r As Long With Sheet1 max = .Cells(1, "A").CurrentRegion.Rows.count For r = 1 To max If .Cells(r + 4, "BT") = sapuName Then .Cells(r + 4, "BT") = newName End If Next r End With End Subし
■ 置換の内容的は簡単なFor繰り返しで完了しています。
6行目 まず、置換対象のデータベースの行数をmaxに取得しています。
8行目 データベースの一行目から引数の業者名と同じ名前を検索して存在すれば、
9行目 そのデータを引数のnewNameに置き換えます。
この動作をデータベースのmax(最終行)まで実行して終了します。
基本的にこれだけです。他の②③④⑤の置換処理は基本的にこのプロシージャを応用しています。
データ置換コード2
■ もう一つ同様の置換プロシージャを紹介しておきます。こちらはcsvファイルの配列内データの置換です。
■ 置換する基本的な動作方法は先ほどのFor繰り返しと同じです。
Sub csv8Gyousya(sapuName As String, newName As String) 'item_revi8.csv内の業者名を置換 'csvを二次元配列に取り込んで加工しその後書き戻す Dim itemv8 As Variant Dim r As Long, i As Integer itemv8 = det_in(ActiveWorkbook.Path & "\recipedata\item_revi8.csv") '業者名の置換実行 For r = 0 To UBound(itemv8, 1) If itemv8(r, 69) = sapuName Then itemv8(r, 69) = newName End If Next r 'csvファイルに書き戻す Call MainProc(itemv8, "item_revi8.csv") End Sub
■ 6行目で食品成分表csvファイルを二次元配列で受け取ります
■ 10行目で変更前の業者名と配列内の69列目のデータ(業者名項目)とを比較しています
■ 11行目でnewNameで置換します。配列内のすべての業者名の置換が終了したら
■ 16行目で最後に元の食品成分表のcsvファイルにデータを描き戻しています。
ダウンロード
ここまでまとめたファイルを下のカードからダウンロードできます
コメント