Excelマクロが動かない!?ActiveXの設定を確認しよう!

こんにちは。事業推進部のワタナベです。
みなさんはExcelでマクロを利用していますか?
マクロは本来私たち人間が操作する複数の操作を一つにまとめ、必要なときに一度に実行することができる大変便利な機能です。
私たちのようなエンジニアも良く利用しています。
様々な業務の効率化に役立つマクロ機能ですが、Office製品を新しいバージョンに更新した途端、更新前は問題なく使えていたマクロが使えなくなった経験はありませんか?
その原因は、マクロの呼び出し方にあるかもしれません。
今回は「ActiveXの設定」についてご紹介します。
Excelでのマクロの呼び出し方の一つに、ActiveXコントロールのコマンドボタンがあります。
Excelシート上に配置したコマンドボタンをクリックするだけで、紐づけたマクロを実行できるため、あたかもシステムを使用しているような直感的な操作が可能となります。

しかし、ActiveXコントロールにはセキュリティリスクがあります。
ActiveXは2000~2010年代に主にインターネットで使われていた仕組みですが、実はシステム権限での実行が可能なためコンピューターのデータに制限なくアクセスできます。
そのため、もし悪意のあるActiveXコントロールが実行された場合、情報漏洩やマルウェア感染が起きてしまうかもしれません。
Excelの開発元であるマイクロソフト社もActiveXのこのようなセキュリティリスクを認識しており、これを低減するために、WebブラウザでのActiveXサポートはすでに終了しました。
(最近インターネットでFlashを見なくなったなぁ、というのはこの影響です)
Office製品では2025年3月現在でもActiveXが使用できますが、こちらのセキュリティ設定も製品更新ごとに強化しており、そのサポートも近々終了するとみられています。
Excelを含むOffice製品ではActiveXコントロールをどの程度制限するかを4段階で設定する「ActiveXの設定」という項目があります。
従来の設定は、「確認メッセージが表示されるものの、オブジェクトの作成や操作は問題ない」という、比較的緩い制限でした。
しかし、最新のMicrosoft Office 2024では、「警告を表示せずに無効」とする、最も厳しい制限が標準の設定となりました。
ActiveXコントロールが無効の状態だと、コマンドボタンをクリックしても反応しなくなるという訳です。
その結果として、コマンドボタンからマクロを実行していたユーザーは、「Office製品を新しいバージョンに更新した後、マクロが使えなくなった」と感じることになります。
特に先に話した経緯により、「10~15年ほど前に詳しい社員が作成した社内のExcelファイル」で使えないといった現象が出る傾向にあります。
では、ボタンをクリックしてマクロを実行する方式を継続したい場合、どのような対応が考えられるでしょうか。
一つは、「ActiveXの設定」を変更する方法です。
任意のOfficeアプリケーションのトラストセンターから「ActiveXの設定」を開き、設定項目を「先に確認メッセージを表示してから、最低限の制限を適用してすべてのコントロールを有効にする」に変更し、「OK」をクリックすれば完了です。

この方法の利点は、設定を変更するだけで更新前と同様にマクロを利用できる点です。
欠点は、上述の通りセキュリティ上のリスクがあることです。
信頼できるソースから入手したファイルでマクロを利用する時に限り、ActiveXコントロールを有効化するといったリスクを低減するための工夫が必要になります。
間違っても「知らないExcelファイル」を実行するために、この設定を変更することはお勧めしません。
もう一つは、ActiveXコントロールによるコマンドボタンから、フォームコントロールによるボタンやオートシェイプ等にマクロの紐づけを切り替える方法です。
この方法の利点は、セキュリティリスクを抑えつつ、ワンクリックでマクロを実行できる点です。
これらはActiveXコントロールに比べてアクセス権限が強くないため、悪意のあるコードの影響が小さくなります。
欠点は、切り替えをユーザーが1ファイルずつ手動で行う必要があり、手間がかかることです。
マクロを使うときは、セキュリティリスクと便利さのバランスを考えて設定を変更しましょう。
最後までお読みいただき、ありがとうございました。