Excelをデータベースとして活用する際の課題と解決策
僕自身、業務の中でExcelをデータ管理ツールとして利用しています。しかし、関数の煩雑さ、データの陳腐化、アクセス権限の管理の難しさ などの課題を日々実感しています。そこで、基幹システム(ERP)であるOdooを導入し、段階的に移行を進めています。
1. Excel活用の限界
Excelは手軽なツールですが、業務が拡大するにつれて、以下の問題が顕著になっています。
✅ 関数が複雑化し、管理が困難になっています
✅ データ更新に手間がかかっています
✅ セキュリティ管理が難しく、誤操作のリスクが高まっています
このままでは業務の効率が悪くなるため、根本的な改善策を検討し、Odooの活用を進めています。
2. VLOOKUP関数の課題と解決策
➡ 基幹システム(Odoo)を活用し、データの一元管理を進めています
ExcelのVLOOKUP関数は列の追加・変更に弱く、関数の再設定が頻繁に発生しています。そこで、Odooのデータベースを利用し、検索機能を強化することで、Excel側の関数依存を減らし、管理の負担を軽減しています。
3. 参照データの陳腐化と解決策
➡ Odooのリアルタイム更新機能を活用し、最新データを保持しています
Excelでは、複数のファイルを手動更新していたため、古いデータが残りやすく、誤った情報を参照するリスクが発生していました。Odooを導入することで、リアルタイムでデータを管理でき、常に最新情報を利用できるようになっています。
4. セキュリティ管理の課題と解決策
➡ Odooのアクセス管理機能を利用し、権限設定を強化しています
Excelでは、誰でもデータにアクセスできるため、誤操作や不正な編集が発生しやすい問題がありました。Odooでは、ユーザーごとに閲覧・編集の権限を設定できるため、業務データの安全性を向上させています。
5. Odoo導入の決断
Excelの限界を感じ、すぐに完全移行するのではなく、段階的なOdoo導入 を進めています。
✅ まずはマスターデータ(顧客・商品)をOdooに統合しています
✅ ExcelのVBAを活用し、必要なデータをOdooから取得しています
✅ 業務の負担を減らしながら、Odooの機能を拡張しています
例えば、顧客データをOdooで管理することで、Excel側では手動更新の手間が省かれ、データの正確性が向上しています。
ERPって難しい
ERPは、営業支援、販売管理、在庫管理、会計システムと多くの業務フローに対応しています。そのため、マスターモデル(リソースモデル)も高度に抽象化されています。
Odooを例にすると、顧客管理を行うres.partner
モデルは、人だけではなく、会社も管理し、顧客だけでなく、取引先やその関係者、自社の関係者までもが、1つのモデルで抽象化されて管理されています。
また、商品(製品)の場合は、1つのモデルではなく、product.template
(抽象的)とproduct.product
(具現的)の2つのモデルで商品(製品)を管理しており、商品(製品)のバリエーションを表現できます。
このように、ERPには、標準化されたノウハウが詰め込まれており、とっても難しく感じます。
6. Odooの実際の活用方法
Odooを業務に組み込んだことで、僕が感じているメリットは大きく3つあります。
① 顧客管理の効率化
以前はExcelで顧客リストを更新していましたが、Odooのコンタクト管理(連絡先)を活用することで、変更履歴が記録され、「誰がいつ更新したか」がすぐに分かるようになっています。
② 実績管理の改善
Excelでは、手動で実績データを集計していましたが、Odooでは業務実績が自動で記録され、リアルタイムで確認できるため、集計作業が不要になっています。
③ 商品管理における上代・下代の管理強化
Odooを活用することで、上代(販売価格)と下代(仕入価格)を明確に管理し、価格設定や利益率の分析が容易になっています。特に、価格変更の履歴を残すことで、過去の値動きを把握しやすくなり、適切な価格戦略を立てる ことができるようになっています。
Odooを試す
Odooには、有償版と無償版とがあり、無償版は、コミュニティ・エディションとして、そのソースコードが公開されています。
次の開発ツールを使えば、手元のパソコンでもOdooを試すことができます。
7. OdooのAPIを利用したExcelのVBA連携
VBAを用いてOdooのAPI経由で顧客データを取得し、Excelに反映することで、顧客の最新データを活用しながら業務を進めることができます。
次のVBA関数は、Odooのres.partner
テーブルから、name
項目をキーに指定した任意の項目の値を取得する関数であり、セルの数式として利用できます。
- セルの数式:
=FetchPartnerField(B2, "email")
Option Explicit
Function FetchPartnerField(sName As String, sFieldName As String, Optional oBooleanField As Boolean = False) As Variant
Dim rs As OdResult
Dim oc As OdClient
Dim col As Collection
Dim dic As Dictionary
' Odooへ接続
Set oc = GetAuthConn()
' 顧客データの検索
Set col = OdRpc.NewList
With OdRpc.NewDomain
.AddArity OdRpc.NewField("name").Eq(sName) ' nameを検索
.BuildAndAppend col
End With
Set dic = OdRpc.NewDict
With OdRpc.SetList(dic, "fields") ' 指定した項目のみ取得
.Add sFieldName
End With
dic.Add "limit", 1 ' 取得レコードは、1件まで
Set rs = oc.Model("res.partner").Method("search_read").ExecuteKw(col, dic)
' データの有無
If rs.Result.Count = 0 Then
' データなし
GetResPartner = CVErr(Excel.XlCVError.xlErrNA)
Else
' 1件目の項目値を返す
GetResPartner = rs.Result(1)(sFieldName)
' Boolean型の項目ではなく、その項目値が偽の場合、Null値に置き換える
If Not oBooleanField And VarType(GetResPartner) = vbBoolean Then
If Not GetResPartner Then
GetResPartner = CVErr(Excel.XlCVError.xlErrNull)
End If
End If
End If
End Function
このような手法を活用することで、Excelの利便性を保ちつつ、Odooを活用したデータ管理を進めています。
VBA連携
Odooには、External APIが提供されており、XML-RPCやJSON-RPCによるリモートアクセスが可能です。
次のツールを使うことで、Excel等のVBAを用い、JSON-RPC経由でOdooのデータにアクセスできます。
8. まとめ
基幹システムのOdooを導入することで、業務の効率化とデータ管理の最適化を進めています。
✅ Odooでデータを一元管理し、Excel作業の負担を軽減しています
✅ Odooのリアルタイム更新により、最新データを常に活用しています
✅ ERPを活用し、権限管理を強化し、セキュリティを向上させています
✅ スモールスタートで導入し、業務の移行をスムーズに進めています
Odooを基幹システムとして活用し、Excelとの適切なバランスを保ちながら、よりスマートな業務管理を実現しています!