前回までのレビュー
前回までは、週間献立表にレシピシステムで作成したレシピのメニュー名を食事カテゴリーごとに設定し、そのメニュー情報の詳細を献立作業指示書として展開して印刷するまでの処理を考えてきました。
メニューを設定するうえで、レシピシステムの機能不足やバグに見舞われ、少し時間を取られましたがなんとかここまでたどり着きました。
業者別食材発注書を作成する
今回からは、第7回目としてこれまでの献立情報から業者別の食材発注書の作成処理を考えてみます。
レシピに設定した食材にはその食材の仕入れ先業者名が設定されています。食材名、使用量も合わせて設定されているので、それら利用して並べ替えや集計を組み合わせると何とかなりそうです。
献立作業指示書のデータを活用
■週間献立表システムで献立作業指示書データを作成するとき、同時にそのデータをCSVデータとして所定のフォルダーに保存しておく処理を追加しました。内容は以下の図で説明します。
上図は、CSVファイルを作成するときに必要になる配列データとファイル名を作成して
最終行の Call hattyukakidasi(fileName, workData)でCSVデータで書き出すメソッドを呼び出しています。
下図はhattyukakidasiのCSVファイルの作成メソッドです。
Sub hattyukakidasi(fileName As String, data As Variant) '対象範囲の値を配列に格納 '保存ファイル名を定義 Dim outputFile As String outputFile = ActiveWorkbook.Path & "\recipedata\hattyuu\" & fileName & ".csv" '空番号を取得 Dim csvNum As Long csvNum = FreeFile '書き込みのためにファイルを開く(ファイルがなければ作成される) Open outputFile For Output As #csvNum Dim i As Long Dim j As Long Dim csvVal As String csvVal = "" '行方向の要素数分ループ For i = LBound(data, 1) To UBound(data, 1) '列方向の要素数分ループ For j = LBound(data, 2) To UBound(data, 2) 'シートの値を配列から定義 csvVal = """" & data(i, j) & """" '値をファイルに書き込み If j = UBound(data, 2) Then '最終列なら、「;」をつけない(デフォルトで改行コードが付与される) Print #csvNum, csvVal Else '最終列でなければ、値の後に「","」をつける必要がある。そして末尾に「";"」を付与し改行なしで書き込む Print #csvNum, csvVal & ","; End If Next Next Close #csvNum 'MsgBox ("CSVが出力されました。") End Sub
下図は実際に書き出された一週間分のCSVファイルです。
■ こんな感じでこのCSVファイルの作成ができました。このCSVファイルを発注データとして活用しようと思います。
下図は新しく作成したエクセルファイル「業者別発注」で上記で作成したCSVファイルを二次元配列に取り出しておく前段階でファイル選択ダイアログを通じてファイル名を取得するコードです。
■これでとりあえず、CSVデータを配列に取り出すことができたので、次回からは具体的なその活用方法を考えていきます。
ダウンロード
ここまでのファイルを下のカードからダウンロードしてください。
コメント