Excel×VBA×MySQLで作る「備品管理システム」ガイド|ユーザマスタ・備品マスタ・利用履歴を連携する方法

社内の備品管理が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所属部署
emailメールアドレス(任意)
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 ドライバが必要です。

手順

  1. MySQL ODBC Connector をインストール(公式サイトからDL)
  2. Windows の「ODBCデータソース」で接続設定を作成
  3. 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)

  1. histories に貸出履歴を登録
  2. 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)

  1. histories の返却日時を更新
  2. 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管理できる」
という仕組みが最も運用しやすい形です。

タイトルとURLをコピーしました