エクセルVBAで自作アドインの便利クラスを活用する方法


reference

photo credit: Melinda * Young The Old Books via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

エクセルVBAで実行時間を測定するクラス、処理の高速化をするクラスを作っておりました。

前回は、以下の記事でそれらのクラスをアドイン化して便利に使いまわそう!という内容でお送りしました。

便利なクラスを使い回す!エクセルVBAで自作クラスをアドイン化する方法
便利なクラスはあちこちで使い回ししたいですよね。「アドイン」という機能を使うと、参照設定のみで使えるようになります。今回は便利なクラスを使い回す!エクセルVBAで自作クラスをアドイン化する方法をお伝えします。

アドインファイルを作るところまでお伝えしたのですが、まだそれを活用する方法をお伝えできていなかったので、本記事はその続編となります。

ということで、エクセルVBAで自作アドインの便利クラスを活用する方法です。

では、行ってみましょう!

前回のおさらい

まずは、お題となる標準モジュールのプロシージャからご覧ください。

こちらです。

処理自体はあまり意味がありませんが、2つの便利なクラスの使用例となっています。

まず、実行速度を測定するTimerObjectクラス。

エクセルVBAで実行時間を手軽に測定するTimerObjectクラスを作る
エクセルVBAでは使い回しをするような機能をクラス化しておくと便利ですよね。今回は、使用頻度が高い機能ということで、エクセルVBAで実行時間を測定するのに便利なタイマークラスの作り方をお伝えしていきます。

そして、処理の高速化を行うPerformanceBoosterクラスです。

エクセルVBAの実行速度を高速化するための処理をクラス化する方法
作成したプロシージャの中に「高速化」をするためのルーチンを入れることがよくありますが、「使い回し」できちゃったほうが便利ですよね。今回は、エクセルVBAの実行速度を高速化するための処理をクラス化する方法です。

この2つのクラス…あちこちで使い回しそうなので、アドイン化して使い回しをしやすくしよう!というのが前回からの内容です。

アドインブックの作成や設定などは、前回の以下記事をご覧くださいね。

便利なクラスを使い回す!エクセルVBAで自作クラスをアドイン化する方法
便利なクラスはあちこちで使い回ししたいですよね。「アドイン」という機能を使うと、参照設定のみで使えるようになります。今回は便利なクラスを使い回す!エクセルVBAで自作クラスをアドイン化する方法をお伝えします。

そして、そのアドインブックにインスタンス生成用のパブリックなFunctionプロシージャを作成する必要がありまして、それはコチラです。

…と、ここまでがおさらいです(長)。

今回はこの作成したアドインを活用していく方法を見ていきましょう。

アドインを他のプロジェクトから活用する

では、元のブック「実行速度.xlsm」からアドインを活用できるようにしていきましょう。

クラスモジュールを開放する

まず、「実行速度.xlsm」には、まだ以下のクラスモジュールが存在しています。

  • TimerObject
  • PerformanceBooster

これら、2つのクラスモジュールは、アドインブックに移設しました。

後ほど参照設定して使えるようになりますので、このブックには存在している必要がありません。

プロジェクトエクスプローラー上で右クリックして「解放」してあげましょう。

クラスモジュールを開放する

アドインを参照設定する

続いて、アドインブックを参照設定していきます。

参照設定の手順は、実はライブラリの参照設定と同じです。

まず、VBEの「ツール」メニューの「参照設定」を選択します。

VBEから参照設定を開く

続いて、以下のように進めますよ。

  1. 参照設定ダイアログで「参照」ボタンをクリック
  2. ファイルの参照ダイアログでユーザーアドインフォルダを選択
  3. ファイル形式を「Microsoft Excel Files」を選択
  4. 作成したアドインブックを選択
  5. 「開く」ボタンをクリック

アドインブックの参照設定
おさらいですが、ユーザーアドインフォルダは以下のようなパスでしたね。

C:\Users\ユーザー名\AppData\Roaming\Microsoft\AddIns

すると、以下のように参照設定ダイアログには「Performance」にチェックが入りますね。

また、プロジェクトエクスプローラーでも「Performance(実行速度.xlam)」の存在が確認(非表示ではありながらもアドインブックが開いている)でき、かつVBAProjectからの参照先として設定されていることがわかります。

アドインブックの参照設定を確認する

アドインのクラスを活用する

では、コードをアドインを活用するものに変更していきましょう。

他のプロジェクトのクラスは「PublicNotCreatable」ですから、Newキーワードでインスタンスを生成できませんでした。

なので、インスタンス生成用のFunctionプロシージャCreateTimerおよびCreateBoosterを使ってあげるんでしたね。

それらに修正したコードがこちらです。

3,4行目をちょっと変更するだけでいけますね。

では、実行して動作確認をしてみましょう。

アドインのクラスを用いる動作確認

無事に動作し、変わらず5秒という記録を叩き出しましたね。

まとめ

以上、エクセルVBAで自作アドインの便利クラスを活用する方法をお伝えしました。

ちょっと手順はいりますが、いつも使うクラスがあれば今回紹介した2つのクラスに限らずアドインブックに入れておくと良さそうですね。

どうぞご活用ください!

連載目次:エクセルVBAのタイマー&高速化クラスとアドインを作る

エクセルVBAで実行時間を測定するタイマークラス、また処理速度を高速化するブースタークラスを作成し、それを使い回ししやすいようにアドイン化する方法をお伝えします。
  1. エクセルVBAで実行時間を手軽に測定するTimerObjectクラスを作る
  2. エクセルVBAの実行速度を高速化するための処理をクラス化する方法
  3. 便利なクラスを使い回す!エクセルVBAで自作クラスをアドイン化する方法
  4. エクセルVBAで自作アドインの便利クラスを活用する方法

  投稿者プロフィール

タカハシノリアキ株式会社プランノーツ 代表取締役
株式会社プランノーツ代表、コミュニティ「ノンプロ研」主宰。1976年こどもの日生まれ。東京板橋区在住。「ITで日本の『働く』の価値を上げる!」をテーマに、VBA&GASの開発、講師、執筆などをしております。→詳しいプロフィールはコチラ
★ご依頼・ご相談はお気軽にどうぞ!→お問い合わせはコチラ
★フォロー頂ければ嬉しいです。

コメント

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