Excel VBA > VBA:実務活用 > Excelで予約システムは作れるか(再考)
このエントリーをはてなブックマークに追加

Excelで予約システムは作れるか(再考)

Excelで予約システムを作ることは可能かを改めて考える

先日Excelの予約システムの感想を本ページで述べたところ、しばしば問い合わせがあったので追加します。

どんな予約方法になっているのか

予約システムと言っても、色々な方法があります。Excel(VBA)でそれを実現しようとしたときに障害となるのは、予約方法だと思います。
なぜならば、そもそもですが、Excelソフト自体が

・複数が同時に使える仕様であるが、弱い(ぜい弱)
・インターネットと連動するような仕組みが弱い(ぜい弱)

これは弊社主観でもありますが、皆さんが考えている「予約方法」に上記が絡むようだと、プログラミングの要求レベルが難易度がぐっと増してくると思います。
逆に予約の状況を1つのシートにまとめるだけ(予約の「行為」はExcelで行わない)ならば、それほど難しくはないと考えられます。
(↑は予約状況の管理表を作るイメージをしています)

でもExcelで敢えて予約できる仕組みを実装する場合

上記で述べた仕様を使うような予約方法であるが、それでも実装したい場合についても少し説明したいと思います。
ただし、すべてを語ることは不可能なので、気づいた点をそのまま説明しますが、内容に優劣つけるほど、頭の中で体系化してません。
実際の状況に応じた見方が必要となると思いますので、参考にされる方は気を付けてください。

同じネットワーク環境から予約をする場合

これはある意味で、インターネットを使って予約をするのと対極的なイメージです。
「インターネットは不特定多数」、「同じネットワーク環境は特定多数」です。
「同じネットワーク環境から予約をする」は、後者そのもので、想定できる環境は主に職場内です。

この場合は複数の社員なりが使っているPCから会議室などの予約が起こり得るものと想定できます。
これをExcelで無理やりやろうとすると、懸念点としては、「もし複数の社員が同時にアクセスした場合にファイル(シート)がどうなってしまうか」です。
開発側から見ると、もっとも怖いのは「Excelファイル破損」、「予約失敗だがエラー通知なしで気づかない」あたりだと思います。
これらを避けるためには、ADOを使って排他制御ができないか、バックアップ用ファイル作成などの検討が必要になりそうです。
更に予約の運用ルール(例えば1人3回まで、2時間以上は承認必要等)はもとより、「パスワード制御」、「システムの更新(アップデート、バージョンアップ)方法」、「アドイン化検討」、「アカウントごとの権限実装」なども考慮する必要が出てきそうで、率直な感想は「かなり苦痛かも」です(笑)。

インターネット上から予約をする場合

こちらについての方が、現在では一般的かもしれません。
そもそもですが、インターネットからExcelを使って予約システムはできません。
(仮にできたとしても一般的でない超個人の環境下であると思われます)

したがってこの時点でExcelを使うメリットが見えてきません。
ただし、冒頭で話した「予約の状況を管理」するという意味ではExcelがやはり使いやすく、この点で登場してきます。
Web上でも予約状況一覧が行えますが、Excelの場合は集計や調査(部屋別、月別の稼働状況を知る)にも活用しやすいのがメリットだと思います。

インターネットを介した予約の場合で敢えてExcelを絡ませるとすると、1度Excel経由にさせてしまうと、「ある程度」制御可能になります。
要は予約のアクションをする前にマクロ付ブックを予めダウンロードしてもらい、そのダウンロードした中にあるExcelブックを開いて、そこから予約を行わせる方法です。
利用者からすれば、手間はかかりますが、Excel側でIEやWebBrowserをハンドリングできるため、不正アクセス的な部分は防げるでしょうし、開発者からして便利(かもしれない)な点は、利用者のPC内もVBAから触れるという点です。
使い方さえ気を付ければ、例えばレジストリに識別用の値(パスワード)を組み込んで、他の人には秘密にしていたいホームページを表示させるなどが可能になります。

いずれにしても予約を考えた場合、通常はそれでも、予約を受け付ける部分はインターネット側のプログラムが対応します。
それはPerlであったりJavaであったり、PHPであったりします。そのため、いわゆるクライアントサーバー型のシステム構成となります。
個人的な結論では、インターネットで予約できるシステムを構築する場合は、予約部分はWeb上で動くプログラムで開発(A)し、予約状況の確認時はCSV等のファイルをダウンロード(B)してそれをExcelで見る、です。
(B)については、(A)にCSV作成、出力機能を持たせてExcel側でボタン一つで一気にダウンロードできる仕組みができると思います。

結局、Excelで予約システムは作れるか

長くなりましたが、最終的な話としては「Excelで予約システムを作れるか」は、予約の形態により開発可否が変わるということと、Excel自体がこのような形態に向いていない、です(ローカルな環境で小規模ならAccessの方が適しています)。
それでも「Excelでなくていけない」と言う場合は、弊社にお問い合わせください。一緒に考えてみたいと思います。

カテゴリ:VBA:実務活用