図1●「マクロの記録」ダイアログボックスの「マクロの保存先」ボックスで個人用マクロブックを選択
図1●「マクロの記録」ダイアログボックスの「マクロの保存先」ボックスで個人用マクロブックを選択
[画像のクリックで拡大表示]
図2●VBE(Visual Basic Editor)で個人用マクロブック(PERSONAL.XLS)を開いたところ
図2●VBE(Visual Basic Editor)で個人用マクロブック(PERSONAL.XLS)を開いたところ
[画像のクリックで拡大表示]
図3●PERSONAL.XLSのワークシートを表示するには,「ウィンドウの再表示」ダイアログボックスで「PERSONAL.XLS」を選択する
図3●PERSONAL.XLSのワークシートを表示するには,「ウィンドウの再表示」ダイアログボックスで「PERSONAL.XLS」を選択する
[画像のクリックで拡大表示]
図4●マクロを記述したブックを「Microsoft Excelアドイン」というファイル形式で保存
図4●マクロを記述したブックを「Microsoft Excelアドイン」というファイル形式で保存
[画像のクリックで拡大表示]
図5●「アドイン」ダイアログボックスで使いたいアドイン・ブックを選択する。これでアドインとして保存したマクロを利用できるようになる
図5●「アドイン」ダイアログボックスで使いたいアドイン・ブックを選択する。これでアドインとして保存したマクロを利用できるようになる
[画像のクリックで拡大表示]

 ふぁ~!今日は暇だな。雨が降ると,患者さんも少ないし。皆さんのところではもう梅雨に入りましたかな。さて,今月のご相談は何でしょう。

今月の相談

「自作のマクロをみんなに使ってもらっています。先日そのマクロをアップデートしたので,配布しようとしたのですが,新しいファイルにデータを移すのが面倒だと言われました。マクロでマクロだけをコピーできないでしょうか?」

 ん~,できないこともないのですが,そのテクニックは,マクロウイルスの作成にも利用できるので,ここでは詳しく解説できません。それよりも,マクロの配布や更新を容易にしたいということであれば,マクロだけのブック(Excelファイル)を作成してみてはいかがでしょうか。

マクロ用ブックを分離する

 データとマクロを一つのブックに保存する--多くのユーザーは,それを当然だと思っていることでしょう。そうした使い方をしている場合,今回の相談のように,マクロをアップデートするには,新たにマクロを作成したブックにデータをコピーするか,または使用中のブックにアップデートしたマクロをコピーしなければなりません。

 前者の場合,データ量が多いと面倒な作業になりますし,後者の場合は,ユーザーがVBE(Visual Basic Editor)の使い方を知らなければマクロのコピーは難しいでしょう。

 そのため,マクロのアップデートが予測されるケースでは,データのブックとマクロのブックを分けておくと便利です。そうすれば,マクロをアップデートしたいときは,マクロ用のブックを差し替えるだけで作業は完了します。VBEを知らないユーザーでも簡単にできます。

 さて,マクロ用のブックとはどのようなものでしょうか? 次のように,大きく三つの種類があります。

  1. マクロを記述した通常のブック
  2. 個人用マクロブック
  3. ブック型アドイン

 結論から言いますと,複数のユーザーで特定のデータを処理するマクロは(1),自分だけで複数のブックに利用するマクロは(2),複数のユーザーで複数のブックに利用するマクロは(3)の形式にするとよいでしょう。以下で,それぞれについて説明します。

用途や目的ごとにブックを分離

 (1)はアプリケーションの構成上,マクロを記述したブック,個別店舗や部門のデータを記録したブック,それらを集計するためのブックといった具合に用途や目的ごとに分けたものを指します。マクロ用ブックのマクロを実行し,データ用ブックから個別データを引き出して,集計用ブックで集計してレポートを作成するといった使い方をします。これならマクロ用ブックだけを更新するのも簡単です。

 ただし,このタイプのマクロを作成する際に注意しなければならないのは,データのコピー元/コピー先となるブックやワークシートを明示的に指定することです。これを省略すると,アクティブ・ワークブックまたはアクティブ・ワークシートがそれぞれの親オブジェクトとなるので,希望の結果を得ることができません。逆に言えば,このマクロ用ブックは,特定のデータ用ブックや集計用ブックだけで利用可能であり,そのままではほかのケースでは使えません。

Excel起動時に読み込まれる
マクロ専用ブック

 (2)は,Excelのスタートアップ・フォルダ(ドライブ名:\Documents and Settings\ユーザー名\Application Data\Microsoft\Excel\XLSTART)に配置することで,特殊な役割を果たすブック*1です。このブックはExcelを起動すると自動的に読み込まれ,このブックにあるマクロを自由に利用できるようになります。一般的に個人用マクロブックは,「PERSONAL.XLS」というファイル名で認識されていますが,実は任意のファイル名と拡張子で構いません。Excelで作成したブックであり,Excelのスタートアップ・フォルダに保存しさえすれば,Excelはこのフォルダにあるファイルをマクロ・ファイルとして取り込みます(ここではPERSONAL.XLSとして説明します)。

 個人用マクロブックは,手作業で作成することもできますが,マクロ記録の機能を利用すると簡単に作成できます。[ツール]-[マクロ]-[新しいマクロの記録]で「マクロの記録」ダイアログボックスを表示し,「マクロの保存先」ボックスで「個人用マクロブック」を選びます(図1[拡大表示])。そして適当な操作をして,マクロ記録を終了します。その後,VBEを開くと,作成したPERSONAL.XLSがオブジェクト・ウィンドウに表示されます(図2[拡大表示])。

 このブックは通常のブック同様に,モジュールを追加したり,コードを記述したりすることができます。イベントも通常のブックと同じです。ただし標準では,ワークシートは表示されません。ワークシートを表示するには,[ウィンドウ]-[再表示]で[ウィンドウの再表示]ダイアログボックスを表示し,PERSONAL.XLSを選択して[OK]ボタンをクリックします(図3[拡大表示])。

 PERSONAL.XLSのワークシートを表示する必要性は低いのですが,私は,マクロが参照する定数的な値(ファイル名やそのパスなど)を記録するといった用途で利用する場合があります。これらの値は,コード中に定数として記述するのでもいいのですが,ワークシートに記述するほうがわかりやすく,変更しやすいので,私はもっぱらワークシートを使っています。

アドインとしてマクロを登録する

 (3)のブック型アドインは,マクロを記述したブックを「Microsoft Excelアドイン」というファイル形式(拡張子.xla)で保存するものです(図4[拡大表示])。そうすれば,どのブックでもそのマクロを利用できます。

 アドインとして保存したマクロを利用するには,そのアドインを登録して読み込みます。[ツール]-[アドイン]で「アドイン」ダイアログボックスを表示し,作成したアドインのチェックボックスにチェックを入れて[OK]ボタンをクリックします(図5[拡大表示])。これで,アドインの中のマクロを利用できるようになります。

 一つ注意してほしいことがあります。マクロを作成していきなりアドインとして保存すると,そのアドインのワークシートを利用できなくなります。前述のようにマクロが参照する定数値をワークシートに記録したいという場合は,とても不便です。私は,これで何度マクロを書き直したことか…。アドインでワークシートを使いたい場合は,いったん通常のブックとして保存し,その後「名前を付けて保存」でアドインとして保存しましょう。少々手間ですが,知っておくと便利なTipsです。

古庄 潤