アルツの備忘録

最近、年のせいで物忘れが激しい。
そこで、いろんなことをここに記録して行きたいと思います。

Excelで業務の自動化 その11 生産計画作成

2020年03月15日 19時45分30秒 | Excel
■マスタから生産計画表を作成し計画算定を行う手助けをする。
 ・品目マスタ、構成マスタから指定された構成情報を抽出する。
 ・抽出した情報に基づいて計画表を作成する、
 ・計画表は「生計」:生産計画、「引計」;引落計画、「在庫」:在庫計画がらなる。
 ・計画表上で「生計」欄に数量入力すると、マスタ情報に基づいて、1階層単位で日程オフセット、数量計算を行い「引計」を作成する。
 ・員数、LT、OLT、残(生計、引計、在庫)は計画表に入力可能 

>マスタの持ち方
ExcelやAccessに部品表と構成表を持つ

<部品表>                  <構成表>
  
            
<部品構成表>


  ※このマスターを使って展開します。

   <メニュー>
   
>DB設定
  説明省略
>展開
 展開処理した結果です。


>計画表作成
・日程表の開始日、終了日を指定して「計画表作成」ボタンを押すと日程表を作成します。
・「生計」:そのアイテムの生産計画 
・「引計」:そのアイテムの引落計画(出荷計画、親アイテムの使用料)
・「在庫」:そのアイテムの在庫推移
  • 在庫計算 : 当日「在庫」= 前日「在庫」+ 当日「生計」-- 当日「引計」
  • 土日は日付けを赤く表示(日程オフセット時に休日の考慮はしません。)


>計画表の動き
  • Aの「生計」を入力すると1階層下のA1、A2の「引計」を自動作成をする。
 >Aの製造リードタイムをオフセットし子部品の「引計」を作成
 >A2は員数2なので、2倍の「引計」を作成
 >在庫計算 : 当日「在庫」= 前日「在庫」+ 当日「生計」-- 当日「引計」 

  • リードタイムオフセット
    >日程オフセット=親のリードタイム+ 構成オフセットリードタイム

  • ロットサイズ
 >入力された「生計」をロットサイズまとめを行う。
<展開処理のコード>
   ―――――――――――――――――――――――――――――――――――――――――
Global GL_ROW As Integer
Global GL_NO As Integer
Global GL_Csta As Integer
Global GL_Cend As Integer

'******************************
' 構成展開
'******************************
Function 構成展開(HinmokuCd, TKBN, CNT, SU)
     Worksheets("構成情報").Activate
     GL_NO = 0
    'シートのセル全範囲をクリア
     If CNT = 3 Then
         'シートのセル全範囲をクリア
         ActiveSheet.Cells.Clear
          'ヘッダーセット
         ActiveSheet.Cells(1, 1).Value = "グループ"
         ActiveSheet.Cells(1, 2).Value = "NO"
         ActiveSheet.Cells(1, 3).Value = "レベル"
         ActiveSheet.Cells(1, 4).Value = "部品コード"
         ActiveSheet.Cells(1, 5).Value = "部品名"
         ActiveSheet.Cells(1, 6).Value = "子部品コード"
         ActiveSheet.Cells(1, 7).Value = "子部品名"
         ActiveSheet.Cells(1, 8).Value = "使用数"
         ActiveSheet.Cells(1, 9).Value = "LT"
         ActiveSheet.Cells(1, 10).Value = "OLT"
         ActiveSheet.Cells(1, 11).Value = "LOT"
         ActiveSheet.Cells(1, 12).Value = "単位"
         ActiveSheet.Cells(1, 13).Value = "数量"
         '出力行設定
         GL_ROW = 2
      Else
         GL_ROW = GL_ROW + 2
     End If
    '指定データセット
     ActiveSheet.Cells(GL_ROW, 1).Value = CNT - 2
     ActiveSheet.Cells(GL_ROW, 2).Value = GL_NO
     ActiveSheet.Cells(GL_ROW, 3).Value = "'1"
     ActiveSheet.Cells(GL_ROW, 4).Value = HinmokuCd
     ActiveSheet.Cells(GL_ROW, 6).Value = HinmokuCd
     ActiveSheet.Cells(GL_ROW, 13).Value = Val(SU)
構成展開サブ HinmokuCd, "1", TKBN, CNT - 2, SU
     GoTo Exit_構成展開
Err_構成展開:
     MsgBox Error$ & Chr$(10) & Chr$(13) & " 親品番 マスター等を確認して下さい。"
Exit_構成展開:
End Function



※構成がなくなるまで、この「構成展開サブ」を自分自身で呼び出す。
Sub / />
         If TKBN = 1 Then
構成展開サブ rs![子部品コード], Lev & "-" & Lev2, TKBN, CNT, W_SU
          Else
構成展開サブ rs![部品コード], Lev & "-" & Lev2, TKBN, CNT, W_SU
         End If
         rs.MoveNext
         DoEvents
     Loop
     GoTo Exit_構成展開サブ
Err_構成展開サブ:
     MsgBox Error$ & Chr$(10) & Chr$(13) & "子品番マスター等を確認して下さい。"
     'MsgBox Err.Description
Exit_構成展開サブ:
     On Error Resume Next
     rs.Close
     Set rs = Nothing
     'Connectionの状態を確認し、クローズ
     If cn.State <> ADODB.adStateClosed Then
         cn.Close
     End If
     Set cn = Nothing
End Sub


■ダウンロードは  こちらのページ をご覧ください。



最新の画像もっと見る

1 コメント

コメント日が  古い順  |   新しい順
Unknown (Unknown)
2021-07-22 05:21:53
エクセルのファイルをDLしました。

ソースコードを確認しようとしたところパスワードを要求されました。

今後パスワードを開示する予定はありますか?
返信する

コメントを投稿