Excel VBA > VBA:実務活用 > Excelで作ったツール・システムをできるだけ外部から管理する方法はあるか?
このエントリーをはてなブックマークに追加

Excelで作ったツール・システムをできるだけ外部から管理する方法はあるか?

VBAで作成したシステム・ツール等を外から管理する方法はあるのか

Excelを使ったシステムやツールを外部から管理する話というのがたまにあったりします。
どういうときかというと、例えば

  • システムが更新されたことを利用者に通知したい
  • 不正な利用(ライセンスのない第三者の利用)をされてないか確認したい

などがあると思います。
また管理的な側面からは「パスワード管理」というのも出てきます。同じパスワードが出回ると困ったことになり、かといってユーザーごとにパスワードを作るのは効率的であるとは言えないです。そもそもExcel上で使用するという特性があるが故、ネット系のシステムにあるような機能の後付けが難しいとも言えます。

ポイントはインターネット経由

弊社の場合ですが、上記のような場合に考え付く方法がインターネットを介した方法です。
もっともインターネット接続のない完全なスタンドアローンだとこれも通用しませんが、この場合は接続自体の有無を検知して「システム自体を使えないように(ロック)する」ということはプログラム上からもできそうです。このようなことを実現するには、突き詰めて言えば、「そのシステムが動かす環境(PC)から必ずアクセスできる場所で、かつこちらからもそこへアクセスできる場所が必要」ということになります。そういう意味でのインターネットですね。

クライアントPCからシステムが起動(A) → システムがネット上のある場所にアクセス(B) → アクセスした結果から利用有無の判断(C)

上記のような流れを作っておけば、色々と活用ができそうです。
例えば、システムが上記「B」にアクセスしたときにフラグをあらかじめ返しおくようにすれば、そのフラグに基づいてシステムが振る舞う動作を決めることができます。あるいはフラグではなく、文字列を返すようにしておけば、その文字列をシステム上に表示することも可能になります。

不安定な場合も考慮すると意外と面倒

インターネットを使うことでこのような方法が可能となる一方で、より完璧に近いような方法を取ろうとすると意外に面倒だったりします。
そもそもインターネット上のアクセス先を準備しておくことが必要ですが、動的な値を返したいならばCGIが必要になったりします。
しかし最も面倒そうなのが、ネット側のサーバがダウンしていたり、何らかの理由で値が戻ってこなかったりする場合です。
例えば、細い回線経由でデータがシステムに「ゆっくり」送られ、それをなかなか受信できずシステムが固まった(ようになる)場合なども考慮しないといけなかったりとかもありそうです。
システムの配布先が不特定多数ならば、各PC環境、システム側からのネットのアクセス手段をInternet ExplorerやWebBrowserにするならばバージョンの影響を受ける可能性があったり、ネット側のサーバのセキュリティ対策(誰でもアクセスできる位置にいるので)もとか考えるだけでもそれなりの対応策が必要です。

このようにVBAで作成したシステムでインターネットを使って外部から管理をする場合、どこまでシステム精度を高める(諦める)かで難易度が大きく変わりそうですが、技術的には十分可能な領域だと思います。

カテゴリ:VBA:実務活用