社内の備品管理がExcelだけでは限界を感じていませんか。
「誰が」「いつ」「どの備品を使ったか」を正確に把握し、履歴を残すためには、データベースを活用した管理が効果的です。特に、Excelでの操作に慣れている現場では、VBA(マクロ)とMySQLを組み合わせた備品管理システムが現実的でコストも低く、導入しやすい方法になります。
この記事では、
- ユーザマスタ
- 備品マスタ
- 利用履歴テーブル
の3つを中心に、データベース構成やVBA連携の仕組み、実践的な運用方法まで、初心者でも構築できるレベルで丁寧に解説します。
システム設計の考え方から実際のサンプルコードまでまとめました。
Excelだけでは管理が複雑になっている担当者の方、新しくシステムを構築したい方におすすめの内容です。
なぜ備品管理にMySQLを使うのか|Excelだけでは限界が来る理由
備品管理は「数量の把握」だけではなく、「利用履歴の追跡」が重要です。
Excelのみで管理すると、以下の課題が発生しやすくなります。
1. 履歴が増えるほど速度が落ちる
履歴が1000件、5000件と増えていくと、Excelは動作が重くなります。
フィルタや検索に時間がかかり、運用がストレスになります。
2. 同時編集できない問題
Excelは基本的に1人しか編集できないため、複数担当者がいる環境では業務が滞ります。
特に備品管理は現場と事務の両方が閲覧・更新するため、同時編集は必須です。
3. データの信頼性が下がる
Excelはコピー、貼り付け、入力ミスで破損しやすいという弱点があります。
紐づけを間違えたり、勝手に改変されてしまうこともあります。
一方、MySQL を使うと以下のメリットが生まれます。
- データ量が増えても高速
- 同時接続に強い
- データの整合性を保てる
- 他のシステムやアプリへ発展させやすい
さらに、VBAから直接MySQLへ接続し、
“Excelの操作感のまま、データはMySQLで安全に管理する”
というハイブリッド型の運用が可能になります。
備品管理システムの基本構成|3つのテーブル設計がすべての軸になる
備品管理システムを作る上で必要なテーブルは主に3つです。
① ユーザマスタ(users)
| 項目名 | 内容 |
|---|---|
| user_id | 主キー(自動採番) |
| user_name | 氏名 |
| department | 所属部署 |
| メールアドレス(任意) | |
| status | 有効 / 無効 |
「誰が利用したか」を管理する基本テーブルです。
② 備品マスタ(items)
| 項目名 | 内容 |
|---|---|
| item_id | 主キー(自動採番) |
| item_name | 備品名 |
| category | カテゴリ(PC・工具・文具など) |
| quantity | 総在庫数 |
| available | 利用可能数 |
| remarks | 備考 |
貸出用品、共用PC、会議室アイテムなどもまとめて管理できます。
③ 利用履歴(histories)
| 項目名 | 内容 |
|---|---|
| history_id | 主キー(自動採番) |
| user_id | ユーザーID |
| item_id | 備品ID |
| use_datetime | 使用日時 |
| return_datetime | 返却日時(NULL可) |
| memo | メモ |
利用履歴テーブルは「事実の記録」であり、最も重要です。
貸出中の判定・返却までの流れはすべてここから計算できます。
MySQLにテーブルを作成するSQL例(コピペでOK)
実際のMySQL構築時に使えるSQLを紹介します。
▼ users テーブル
CREATE TABLE users (
user_id INT AUTO_INCREMENT PRIMARY KEY,
user_name VARCHAR(100),
department VARCHAR(100),
email VARCHAR(200),
status TINYINT DEFAULT 1
);
▼ items テーブル
CREATE TABLE items (
item_id INT AUTO_INCREMENT PRIMARY KEY,
item_name VARCHAR(200),
category VARCHAR(100),
quantity INT,
available INT,
remarks TEXT
);
▼ histories テーブル
CREATE TABLE histories (
history_id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
item_id INT,
use_datetime DATETIME,
return_datetime DATETIME,
memo TEXT,
FOREIGN KEY (user_id) REFERENCES users(user_id),
FOREIGN KEY (item_id) REFERENCES items(item_id)
);
これだけで基本的な備品管理システムのデータ構造は完成します。
Excel VBAからMySQLへ接続するための準備
Excel から MySQL に接続するためには ODBC ドライバが必要です。
手順
- MySQL ODBC Connector をインストール(公式サイトからDL)
- Windows の「ODBCデータソース」で接続設定を作成
- Excel VBA で ADODB を使って接続
VBAでよく使う接続コードは以下です。
▼ VBA:MySQL接続サンプル
Dim conn As Object
Set conn = CreateObject("ADODB.Connection")
conn.ConnectionString = _
"Driver={MySQL ODBC 8.0 ANSI Driver};" & _
"Server=localhost;" & _
"Database=equipment;" & _
"User=root;" & _
"Password=xxxx;" & _
"Option=3;"
conn.Open
この方法で、Excel から直接 SQL が実行できるようになります。
VBAで行う主要な業務処理|登録・更新・貸出・返却
次に、実際の備品管理の要となる処理を VBA でどう操作するか見ていきます。
① 備品一覧の取得(SELECT文)
sql = "SELECT item_id, item_name, category, available FROM items"
Set rs = conn.Execute(sql)
これを Excel シートに貼り付けると、
「最新の備品リスト」を一発で取得できます。
② 貸出処理(INSERT + UPDATE)
- histories に貸出履歴を登録
- items の available を減らす
sql = "INSERT INTO histories(user_id, item_id, use_datetime) " & _
"VALUES(" & userId & "," & itemId & ", NOW());"
conn.Execute sql
sql = "UPDATE items SET available = available - 1 WHERE item_id = " & itemId
conn.Execute sql
③ 返却処理(UPDATE)
- histories の返却日時を更新
- items の available を増やす
sql = "UPDATE histories SET return_datetime = NOW() " & _
"WHERE history_id = " & historyId
conn.Execute sql
sql = "UPDATE items SET available = available + 1 WHERE item_id = " & itemId
conn.Execute sql
Excel画面を使った運用例|担当者が迷わないUIの作り方
VBA×MySQLで備品管理システムを作る際、
最も重要なのは「UI(操作画面)」です。
▼ 例:貸出画面
- ユーザー名を選択(ドロップダウン)
- 備品名を選択(ドロップダウン)
- [貸出] ボタンを押す → VBAが自動処理
▼ 例:返却画面
- 貸出中の一覧を表示
- チェックした行の備品を返却
- MySQLに履歴が自動反映
UIのポイント
- 下手にフォームを作るより「Excelの表×ボタン」で十分
- ドロップダウンはマスタから自動更新
- 一覧は「最新を取得」ボタンで再読込
- 入力は最低限にし、自動化を徹底する
実運用に向けたTips|エラー防止・履歴管理・マスタ整備
実際に社内運用すると、以下のポイントが特に重要です。
1. マスタは「無効化」で管理する
削除すると過去履歴と整合性が取れなくなります。
→ status フラグで無効にするのが基本。
2. 履歴テーブルは絶対に編集させない
履歴が改ざんされると
「貸しっぱなし」「返却済み」の判断が狂います。
3. エラー処理は必須
貸出可能数(available)が 0 なら貸出させないなど、
業務ロジックをVBAで制御します。
4. バックアップを自動化
MySQLなら自動バックアップが簡単。
Excelと違って破損の心配はほぼありません。
まとめ|Excel+VBA+MySQLは「最強の社内備品管理システム」になる
備品管理を効率化したい企業では、
「Excelで扱える」「データは安全にDB管理できる」
という仕組みが最も運用しやすい形です。
