KNOWLEDGE - COLUMN ナレッジ - コラム

【エバンジェリスト・ボイス】Excelの便利機能~マクロ~

グローバル・イノベーション・センター
エバンジェリスト 黒住 好忠     

Excelのマクロをいつでも使えるようにしよう
みなさま、初めまして。エバンジェリストの黒住です。

普段は業務システムの開発プロジェクトに携わっているのですが、様々なソフトウェアやハードウェアに触れる機会が多いため、これらの話題を中心に紹介していきたいと思います。

今回は、使っている人も多いと思われるMicrosoft Excel(以降Excelと省略)のマクロ機能について取り上げてみたいと思います。ここではExcel 2019を例に説明していますが、旧バージョンであるExcel 2010、2013などでも同様の操作が可能です。

便利だけど制約のあるExcelマクロ
Excelのマクロは便利なのですが、マクロを使うためには、ちょっとした制約があります。
Excelには複数のファイル形式が存在していて、このうちマクロが使えるのはファイルの拡張子が「*.xlsm もしくは *.xlsb」の場合に限られます。
最も一般的なExcelのファイル形式である「*.xlsx」だと、マクロが利用できません。

マクロを含んだファイルをxlsx形式で保存しようとすると、次のようにエラーメッセージが表示されます。
01_SaveError_1113x299

Excelファイルに関する参考情報
話は少し脱線するのですが、Excelでよく利用される3つのファイル形式に関する参考情報を紹介しておきたいと思います。
02_FileTypes_487x123
マクロが使えるかどうか…という観点では既にお伝えしたとおりですが、これら全てのファイルの実態はZipファイルなのです! そう、あのファイル圧縮で使うZipファイルです。
そのため、Excelファイルの拡張子をzipに変更するとファイルの中身を見ることができます。Excelに貼り付けている画像ファイルはpng形式として保存されているので、画像ファイルだけを直接取り出す…というような作業も簡単にできてしまいます。

これを知っておくと、Excelファイルが壊れて自動修復もできない…という状況で、直接zipファイルから画像だけを抜き出したり、一部のファイルを強制的に書き換えて手動でファイルを修復する…という荒技が使えるようになります。

いつでもExcelのマクロを使いたい!
では話を元に戻しましょう。

Excelでマクロを使えるのは、ファイル形式が*.xlsm(もしくは*.xlsb)の場合とお伝えしましたが、一般的な*.xlsx形式の場合でもマクロを使いたいケースが多々あります。

じゃあ、*.xlsxファイルをマクロが使える形式で保存し直せばいいじゃないか…という声も聞こえてきそうですが、実際にはファイル形式を変えられないケースも多いと思います。特に、申請書類のテンプレートや、システムの設計書などの場合、ファイル形式を勝手に変えることは御法度だったりします。

でもご安心ください。Excelには開いたファイル形式に関係なく、常にマクロを使う方法が存在するのです。つまり、通常はマクロが使えない*.xlsx形式のファイルであっても、自由にマクロが使えるのです。

ネタばらし
答えを先に言ってしまうと、「PERSONAL.XLSBを使って常にマクロを有効にする!」…という方法を使います。

このPERSONAL.XLSBは少し特殊なファイルで、私たちが意識しなくても「Excelを起動するたびに裏側で自動で読み込まれる」ファイルになります。しかも、こっそり読み込まれるので、そのファイルの存在を意識することはありません。

PERSONAL.XLSBはマクロが利用できるファイル形式なので、このファイルにマクロを記録しておけば、Excelを起動するだけで(裏側でこっそりPERSONAL.XLSBが読み込まれて)常にマクロが利用できる状態になります。

それでは、実際にPERSONAL.XLSBを使ってマクロを登録するまでの具体的な手順を見ていきましょう。

いつでも使えるマクロを登録する手順
ここでは「作成したマクロを、リボンからいつでも使えるようにする」までの具体的な手順を紹介します。大まかに言うと、次のような流れで進めることになります。

1. マクロを使うために「開発」タブを表示させる(最初の1回だけ)
2. PERSONAL.XLSBを作成する(最初の1回だけ)
3. PERSONAL.XLSBにマクロを登録する
4. 登録したマクロをリボンから呼び出せるようにする

なお、4番目の「マクロをリボンから呼び出せるようにする」手順はオプションになります。この作業を行わなくても、1~2番目の手順で、PERSONAL.XLSBに登録したマクロをいつでも呼び出せるようになっています。

では、それぞれのステップについて説明を進めていきましょう。

マクロを使うために「開発」タブを表示させる(最初の1回だけ
03_RibbonSetting_853x408
リボンに「開発」タブを表示させるため、リボンの任意の場所を右クリックして「リボンのユーザー設定(R)...」を選択します。
04_SelectDev_1362x837
画面右側にある「開発」にチェックを入れて、OKボタンをクリックします。
05_DevTab_1276x241
これで「開発」タブが表示され、マクロに関する操作が行えるようになりました。
続いて、PERSONAL.XLSBにマクロを登録する手順に進みます。

PERSONAL.XLSBを作成する(最初の1回だけ)
PERSONAL.XLSBは初期状態では作成されていないため、最初に1度だけPERSONAL.XLSBを作成する必要があります。PERSONAL.XLSBは以下の手順で作成できます。
06_RecMacro_712x241
開発タブにある「マクロの記録」をクリックします。
07_MacroSettings_580x429
記録するマクロの設定ダイアログが開くので、「マクロの保存先」に「個人用マクロ ブック」を選択してOKボタンをクリックします。(間違いやすいので注意!)
この「個人用マクロ ブック」がPERSONAL.XLSBなのです。
08_Stop_711x241
今回の目的は「PERSONAL.XLSB(個人用マクロ ブック)を作成すること」なので、開発タブの「記録終了」をクリックしてマクロの記録を終了させます。
09_CheckMacro_709x241
開発タブの「マクロ」ボタンをクリックすれば、実際にPERSONAL.XLSBにマクロが登録されたかどうかを確認できます。
10_MacroList_690x626
正常に登録できていれば、マクロ一覧に「PERSONAL.XLSB!Macro1」のような形で、PERSONAL.XLSBに登録されたマクロが表示されます。

なお、このPERSONAL.XLSBは以下のフォルダに作成されます。
%AppData%\Microsoft\Excel\XLSTART

PERSONAL.XLSBにマクロを登録する
PERSONAL.XLSBが作成されたので、PERSONAL.XLSBに独自のマクロを登録してみましょう。先ほどと同様に「マクロの記録」でマクロを記録させることも可能ですが、今回はVBAを使ってマクロを編集してみたいと思います。
11_VB_709x241
マクロを編集するために、開発タブにある「Visual Basic」ボタンをクリックします。
12_Modules_771x489
VBAのエディタが開きます。
左側のツリーに「VBAProject(PERSONAL.XLSB)」が表示され、その配下に標準モジュールが登録されていることが確認できると思います。
13_EditModule_956x456
今回はPERSONAL.XLSBに登録されている標準モジュール(Module1)のマクロをVBAで編集してみました。
このマクロを実行すると、開いているワークシートのA1セルに"Hello, VBA."という値が入り、"Success!" というメッセージボックスが表示されます。(簡単な動作確認用のマクロなので、処理自体に大きな意味はありません)

登録したマクロをリボンから呼び出せるようにする
PERSONAL.XLSBに登録したマクロはExcelの開発タブにある「マクロ(Alt+F8)」からいつでも呼び出すことができますが、頻繁に使うマクロであれば、リボンから呼び出せた方が便利です。(リボンから呼び出す必要がなければ、この手順は不要になります)
ここでは、上で作成した「Sampleマクロ」をリボンから呼び出せるようにするまでの手順を説明します。
14_RibbonSetting_853x408
自分専用のリボンを作成するために、リボン上の任意の場所を右クリックして「リボンのユーザー設定」を選択します。
15_AddNewTab_720x619
リボンの設定画面が開くので、右側の「新しいタブ」ボタンをクリックして、新しいタブを作成します。タブの順序は、右側にある上下矢印(▲▼)ボタンで調整できます。
16_NewTab_720x551
上記のように「新しいタブ(ユーザー設定)」が追加されました。
そのままの名前だと分かりづらいので「名前の変更」ボタンをクリックして、リボン名とグループ名を変更します。
17_Rename_718x555
今回は、リボン名を「MyCustom」、グループ名を「グループ1」に変更しました。
18_AddMacro_1262x665
左側の「コマンドの選択」で「マクロ」を選択し、右側で先ほど作成した「グループ1」を選択した状態で「追加>>」ボタンをクリックします。
これで、新しく作成した「MyCustomリボンのグループ1」に、PERSONAL.XLSBに作成していたSampleマクロが登録されます。
19_RibbonList_1405x665
右側のツリー表示で、グループ1の下に「PERSONAL.XLSB!Sample」マクロが追加されたことが確認できます。このマクロも、そのままでは名前が分かりづらいので「名前の変更」ボタンをクリックして名前を変更します。
20_EditIcon_469x487
マクロなどのコマンドは、名前(表示名)以外に、リボンに表示するアイコンも設定できます。今回は、表示名を「Hello」としました。
21_Finished_717x553
変更した表示名とアイコンはリボンの設定画面でも確認できます。
この内容で良ければ、OKボタンを押してリボン設定を確定させます。
22_MyRibbon_1014x241
これで、Excelのリボンに「MyCustom」が追加され、その中に「Hello」ボタンが表示されるようになりました。
23_Execute_1004x667
独自に追加した「Hello」ボタンをクリックすると、PERSONAL.XLSBのSampleマクロが呼び出されるように設定しているため、本来はマクロが使えないはずの「*.xlsx」形式のファイルでマクロが実行できています。
24_NewExcel_1001x246
また、リボンの設定と、PERSONAL.XLSBに登録したマクロはExcelを起動するだけで有効になるため、別のExcelファイルを開いた場合でも共通的に使うことが可能です。

それでは楽しいExcelライフを!
いかがでしたでしょうか。
PERSONAL.XLSBを使えば、いつでも好きなときにマクロを呼び出せるようになるため、Excelの可能性がより一層広がります。

独自のマクロを複数追加して機能が充実してくると、「独自に作成したタブごと他の人にも展開したい」…というケースが出てくるかもしれませんが、このような場合は「Excelのアドイン化」がおすすめです。
今回はアドインの作成方法については解説していないので、また別の機会で紹介したいと思います。

それでは、よいExcelライフをお楽しみください!

当サイトの内容、テキスト、画像等の転載・転記・使用する場合は問い合わせよりご連絡下さい。

エバンジェリストによるコラムやセミナー情報、
IDグループからのお知らせなどをメルマガでお届けしています。

メルマガ登録ボタン

黒住 好忠

株式会社インフォメーション・ディベロプメント 先端技術部 テクニカルスペシャリスト

この執筆者の記事一覧

関連するナレッジ・コラム

どのインスタンスを選べばいいの?EC2性能比較!

AIがプログラミングする時代の到来!?

残された攻撃の痕跡を追え! ~スレットハンティングのススメ~