1. 概要
このプログラムは、出荷梱包物量を計算・管理するためのVisual Basicフォームアプリケーションです。EPPlusライブラリを使用してExcelファイルとの連携を行い、出荷データを基に様々な梱包形態(ケース出荷、コンテナ出荷、段ボール梱包)の容積と数量を計算します。
ファイル名: T3_3_梱包物量.vb
クラス名: T3_3出荷梱包物量From
主要ライブラリ: OfficeOpenXml (EPPlus)
クラス名: T3_3出荷梱包物量From
主要ライブラリ: OfficeOpenXml (EPPlus)
2. プログラム構造
2.1 使用ライブラリ
- OfficeOpenXml - Excel操作用ライブラリ
2.2 主要コンポーネント
| コンポーネント | 説明 |
|---|---|
| フォーム | T3_3出荷梱包物量From |
| DataGridView | 複数のグリッド表示コントロール |
| データベース | Access Database (テーブル: T200, TC10, TC20, TC30等) |
| Excel | 出荷スペース計算.xlsx, 出荷コンテナ仕様.xlsx |
3. 主要機能
3.1 出荷梱包計算機能
- ケース単位出荷容積計算 - ケース単位での出荷容積を算出
- バラ単位コンテナ容積計算 - コンテナベースの出荷容積を算出
- 段ボール梱包数計算 - 段ボールサイズ別の梱包数を割り付け
- 梱包後容積計算 - 梱包後の総容積を集計
3.2 データ表示機能
- 出荷日指定による絞り込み
- 出荷データの容積換算表示
- コンテナ仕様表示
- 段ボールサイズ表表示
- 集計データのDataGridView表示
3.3 Excel連携機能
- Excelからのマスタデータ読み込み
- 計算結果のExcel出力
- 段ボール仕様、コンテナ仕様の読み込み
4. メソッド詳細
4.1 初期化・イベントハンドラ
| メソッド名 | 説明 | 処理内容 |
|---|---|---|
| スペース計画2A出荷梱包物量_Load | フォームロード時 |
・ファイル確認 ・著作権、有効期間表示 ・指定出荷日設定 ・各種データ表示の初期化 ・コンテナ仕様、段ボールサイズ読み込み |
| 出荷梱包物量計算Bt_Click_1 | 計算ボタンクリック時 |
・指定出荷日での再計算 ・TC10~TC30処理実行 ・データグリッド更新 |
| Excel保存して閉じるBt_Click | Excel保存・閉じる時 | 計算結果をExcelファイルに保存してフォーム終了 |
4.2 主要計算メソッド
| メソッド名 | 入力 | 処理内容 | 出力 |
|---|---|---|---|
| TC10_ケース単位出荷容積 | 指定出荷日 |
・T200テーブルからケース出荷データ抽出 ・出荷先ごとに集計 ・容積合計算出 |
TC10_ケース単位出荷容積テーブル DataGridView表示 |
| TC20_バラ単位出荷コンテナ容積 | 指定出荷日 コンテナ型式 充填率 |
・バラ出荷データ抽出 ・コンテナ仕様と照合 ・必要コンテナ数計算 ・コンテナ容積算出 |
TC20_バラ単位出荷コンテナ容積テーブル DataGridView表示 |
| TC30_バラ単位全段ボール梱包数 | 指定出荷日 |
・バラ出荷容積を段ボールに割り付け ・段ボールサイズ別に数量計算 ・充填率考慮した最適サイズ選定 ・複数段ボール対応 |
TC30_バラ単位全段ボール梱包数テーブル DataGridView表示 |
| 複数個段ボール計算 | 容積(DD) 行番号(i) |
・200サイズ段ボール個数算出 ・余剰容積を適切サイズに割り付け |
DataGridView更新 |
4.3 データ表示メソッド
| メソッド名 | 処理内容 |
|---|---|
| 出荷データ容積換算Dgv表示 |
・ケース出荷とバラ出荷の集計表示 ・梱包数量と容積の表示 ・3列×5行のグリッド構成 |
| 出荷梱包計後の容積Dgv表示 |
・梱包後の最終容積表示 ・コンテナ数、面積計算 ・段ボール数集計表示 |
| バラ出荷単位_段数ボール集計 |
・段ボールサイズ別の集計 ・横計、容積計算表示 ・サイズ別容積計算(ゆうパケット~200サイズ) |
| 出荷梱包計後の出荷コンテナ計算 |
・コンテナ型式別の集計 ・コンテナ外容積計算 ・出荷データの区分による処理分岐 |
4.4 Excel処理メソッド
| メソッド名 | 処理内容 |
|---|---|
| 出荷コンテナ仕様Dgv表示 |
・"出荷スペース計算.xlsx"から"出荷コンテナ仕様"シート読み込み ・31型、40型、51型、60型の仕様表示 |
| 段ボールサイズ表Dgv表示 |
・"出荷スペース計算.xlsx"から"段ボール仕様"シート読み込み ・ゆうパケット~200サイズの仕様表示 |
| TC00_出荷コンテナ仕様インポート |
・"出荷コンテナ仕様.xlsx"をAccessデータベースにインポート ・TC00テーブル作成 |
| Exsel作成 |
・DataGridViewデータをExcelファイルに出力 ・EPPlusライブラリ使用 |
| Excelインポート |
・ExcelファイルをAccessデータベースにインポート ・Access.Applicationオブジェクト使用 |
5. データフロー
5.1 処理フロー図
メイン処理フロー:
- フォームロード → 初期データ読み込み
- 指定出荷日設定
- TC10: ケース単位出荷容積計算
- TC20: バラ単位コンテナ容積計算
- TC30: 段ボール梱包数計算
- 容積計算と集計
- DataGridView表示更新
- Excel保存(オプション)
5.2 データソース
| データソース | 形式 | 用途 |
|---|---|---|
| T200テーブル | Access Database | 出荷データ(ケース・バラ出荷情報) |
| T210_指定出荷日 | Access Database | 出荷日情報 |
| TC00_出荷コンテナ仕様 | Access Database | コンテナ仕様マスタ |
| 出荷スペース計算.xlsx | Excel | 段ボール・コンテナ仕様 |
6. データベース処理
6.1 使用テーブル
| テーブル名 | 説明 | 主要フィールド |
|---|---|---|
| T200 | 出荷基本データ | 出荷日, 出荷区分, 出荷先, C行, C容, B行, B容, G行, G容 |
| T210_指定出荷日 | 指定出荷日 | 出荷日, 全出荷日数 |
| TC00_出荷コンテナ仕様 | コンテナ仕様 | 型式, 外寸W/D/H, 外寸容積/面積, 内寸W/D/H, 内寸容積 |
| TC10_ケース単位出荷容積 | ケース出荷集計 | 出荷日, 出荷区分, 出荷先数, Cケ, C容 |
| TC20_バラ単位出荷コンテナ容積 | コンテナ出荷集計 | 出荷日, 出荷区分, 型式, コンテナ数, 出荷コンテナ容積 |
| TC30_バラ単位全段ボール梱包数 | 段ボール梱包集計 | 出荷日, 出荷区分, Bケ, B容, 段ボール充填率, ゆうパケット~200サイズ |
| TC40_バラ単位全出荷段ボール容積 | 段ボール容積中間 | TC30作成時に使用される中間テーブル |
| TB10系テーブル | 集計テーブル群 | ケース/バラ/全量の出荷日出荷区分別集計 |
6.2 SQL処理
主要なSQL処理パターン:
- CREATE VIEW - クエリビューの作成(QC10*, QC20*, QC40*)
- SELECT ... INTO - 集計テーブルの作成(TC10, TC20, TB10*)
- GROUP BY - 出荷日、出荷区分、出荷先での集計
- LEFT JOIN - コンテナ仕様との結合
- HAVING句 - 条件による絞り込み
7. 計算ロジック
7.1 段ボールサイズ割り付けロジック
段ボール充填率: 0.9 (90%)
計算式: DD = B容 ÷ 段ボール充填率
計算式: DD = B容 ÷ 段ボール充填率
| 段ボールサイズ | 容積(m³) | 割り付け条件 |
|---|---|---|
| ゆうパケット | 0.0018 | DD ≤ 0.0018 |
| 60サイズ | 0.008 | 0.0018 < DD ≤ 0.008 |
| 80サイズ | 0.0189 | 0.008 < DD ≤ 0.0189 |
| 100サイズ | 0.037 | 0.0189 < DD ≤ 0.037 |
| 120サイズ | 0.064 | 0.037 < DD ≤ 0.064 |
| 140サイズ | 0.1016 | 0.064 < DD ≤ 0.1016 |
| 160サイズ | 0.1517 | 0.1016 < DD ≤ 0.1517 |
| 180サイズ | 0.216 | 0.1517 < DD ≤ 0.216 |
| 200サイズ | 0.2963 | DD > 0.216 (複数個計算) |
7.2 コンテナ計算ロジック
コンテナ数計算式:
コンテナ数 = Int(B容 ÷ (コンテナ内寸容積 × コンテナ充填率) + 0.5)
コンテナ容積計算式:
出荷コンテナ容積 = コンテナ数 × コンテナ外寸容積
コンテナ数 = Int(B容 ÷ (コンテナ内寸容積 × コンテナ充填率) + 0.5)
コンテナ容積計算式:
出荷コンテナ容積 = コンテナ数 × コンテナ外寸容積
| コンテナ型式 | 外寸容積(m³) | 備考 |
|---|---|---|
| 31型 | 0.043 | 小型コンテナ |
| 40型 | 0.049 | 中型コンテナ |
| 51型 | 0.063 | 大型コンテナ |
| 60型 | 0.077 | 特大コンテナ |
7.3 複数個段ボール計算
200サイズ超過時の処理:
- AA = Int(DD ÷ 0.2963) → 200サイズ段ボール個数
- BB = DD - AA × 0.2963 → 余剰容積
- 余剰容積BBに対して適切な段ボールサイズを割り付け
8. Excel連携
8.1 読み込みファイル
| ファイル名 | シート名 | 用途 |
|---|---|---|
| 出荷スペース計算.xlsx | 段ボール仕様 | 段ボールサイズマスタ(9種類) |
| 出荷スペース計算.xlsx | 出荷コンテナ仕様 | コンテナ型式マスタ(4種類) |
| 出荷コンテナ仕様.xlsx | 出荷コンテナ仕様 | データベースインポート用 |
8.2 出力ファイル
| ファイル名 | シート名 | 内容 |
|---|---|---|
| スペース計算.xlsx | 出荷梱包物量 |
・出荷梱包数量/容積 ・全出荷日数、指定出荷日 ・出荷梱包方法 ・コンテナ型式、充填率、数量、容積 ・段ボール充填率、数量 |
| TC30_バラ単位全段ボール梱包数.xlsx | Sheet1 | 段ボール梱包数の中間データ |
8.3 EPPlus使用例
' Excel読み込み
Dim fi As New IO.FileInfo(Dat保存Path & "\SoftData\出荷スペース計算.xlsx")
Using pkg As New ExcelPackage(fi)
Dim sheet1 As ExcelWorksheet = pkg.Workbook.Worksheets("段ボール仕様")
For j = 1 To 10
For i = 2 To 10
MyDgv.Item(j - 1, i - 2).Value = sheet1.Cells(i, j).Value
Next
Next
End Using
' Excel書き込み
Dim MYFile As String = Dat保存Path & "\SoftData\" & myExcel & ".xlsx"
Dim fi As IO.FileInfo = New IO.FileInfo(MYFile)
Using pkg As New ExcelPackage(fi)
Dim sheet1 As ExcelWorksheet = pkg.Workbook.Worksheets.Add("Sheet1")
For j = 0 To Maxj
For i = 0 To Maxi
sheet1.Cells(i + 2, j + 1).Value = MyDgv.Item(j, i).Value
Next
Next
pkg.Save()
End Using
9. 補足情報
9.1 出荷区分
- ケース_出荷 - ケース単位での出荷
- バラ_出荷コンテナ - コンテナによるバラ出荷
- バラ_段ボール - 段ボール梱包によるバラ出荷
9.2 画面項目
- 指定出荷日Tb - 計算対象の出荷日
- 全出荷日数Tb - 全体の出荷日数
- バラ出荷_コンテナ選択Cb - コンテナ型式選択コンボボックス
- 出荷コンテナ充填率Tb - コンテナ充填率(デフォルト90%)
- 段ボール充填率Tb - 段ボール充填率(固定90%)
- 出荷データの区分Rb - 出荷データ区分ラジオボタン
9.3 注意事項
- 段ボール充填率は固定で0.9(90%)に設定
- コンテナ充填率はユーザー設定可能
- 出荷区分により処理フローが変わる
- Excel処理にはEPPlusライブラリが必要
- Access連携にはAccess.Applicationオブジェクトが必要
- 著作権と有効期限の表示機能あり
10. まとめ
このプログラムは、複雑な出荷梱包計算を自動化するための包括的なソリューションです。以下の特徴があります:
- 多様な梱包形態への対応 - ケース、コンテナ、段ボールの3形態
- 正確な容積計算 - 充填率を考慮した精密な計算
- 最適な梱包割り付け - 容積に応じた適切なサイズ選定
- データベース連携 - Access DBでのデータ管理
- Excel連携 - マスタ読み込みと結果出力
- 視覚的なデータ表示 - DataGridViewによる分かりやすい表示
対象ユーザー: 物流・出荷管理担当者
想定用途: 日次出荷計画、梱包資材管理、スペース最適化
想定用途: 日次出荷計画、梱包資材管理、スペース最適化