今回、紹介するのは、異なるブックに実装されている関数を呼び出すサンプルコードです。具体的には、Application.Runメソッドを使って、他ブックの関数を呼び出しています。
サンプルは、会社等で利用できる休暇申請書の入力や印刷が可能なブックと、それに必要なデータを異なるブックに保存した、アプリとデータを分離したソフトウェア構造となっています。
データが記述されている側のブックが更新されたときに、休暇申請書アプリ側の関数を呼び出し、アプリ側で保持している情報を、同時に更新するような仕組みにしてあります。システム屋さんは、このように動作するプログラムの振る舞いのことを、『同期をとる』とよく言います。
実用的なサンプルにしたほうが、理解がし易いのではないかと考え、休暇申請書をサンプルに採用しました。良かったら使ってみてください。
ソースコードは、Microsoft社の製品 エクセル向けに書いたものなので、利用するには、ご使用のコンピュータに、エクセルがインストールされていることが、必須条件です。
以下は、サンプル画面です。
サンプルのデータは、私が作成した架空の情報です。サンプルデータに含まれる個人名などの情報は、実在の人物とはまったく関係ありませんので、あらかじめご了承ください。
アプリ側は、データベースが変更された時と、起動時にのみ、データベースのデータを取得するように設計しています。VBAで開発していると良くあることなのですが、デバッグモードになると、すでにメモリに確保されている情報が、クリアされてしまう場合があります。そうなると、社員選択画面を表示しても、何も表示されなくなってしまいます。
ですので、マクロなどで、データを再取得する、すべを実装しておいた方が、無難かもしれません。一般的には、今回のように、データベースが変更されたときだけ、再取得すればよいのですが、VBAの場合、簡単にデバッグモードに入れてしまうので、社員選択の画面を表示する時には、常に、データを再取得するように、実装するのも、ありかもしれません。
データの大きさや環境などの状況に応じて、どのように実装するのが望ましいか、よく考えて設計しましょう。
サンプルに含まれるデータは、私の創作によるものです、サンプルデータに含まれる個人名、会社名などの情報は、実在の人物とはまったく関係ありません。
作者は、本ソフトウェアの使用または使用不能から生じるコンピュータの故障、情報の消失、その他あらゆる直接的及び間接的被害に関して一切の責任を負いません。
ご使用にあたり、改善の要望、不具合の発生等ありましたら、画面下のアドレスまで、ご連絡頂きますよう、宜しくお願いいたします。ご面倒、ご不便をお掛けしますが、宜しくお願いいたします。