会社で使っていたマクロが含まれるファイルを自宅などの異なる環境で開くと、今まで問題なく動いていたマクロが実行できずエラーメッセージが表示されてしまう事があります。
最近はテレワークなども徐々に浸透してきているためか、このお困りごとの相談も微妙に増加傾向にあるように感じます。そこで今回は、マクロが動かない原因を探るポイントなどをまとめてみました。
※解説画像はMicrosoft365のExcelを使用しています。
マクロは「有効化」しないと動かない
ブックを開いた時、リボンの下に「セキュリティの警告」と書いてある黄色いバーが表示されていませんか?
Excelは、マクロ入りのブックが開かれた段階では一旦マクロを無効化します。
マクロというのはいわゆるプログラムコードであり、善意を持って作れば作業を効率化してくれるとても便利なものになりますが、残念ながら世の中には悪意をもって作られパソコンやファイルに重大な被害を及ぼす「マクロウィルス」というものも存在します。
ブックを開いただけで即実行、なんて命令も作れてしまうので、防御のために一旦止める仕組みになっているのですね。
この場合は、黄色いバーの中にある[コンテンツの有効化]をクリックすればマクロを実行できるようになります。
[コンテンツの有効化]を行うと、「信頼のおけるブック」と認定され、同じ環境下では以降警告は出なくなり、すぐにマクロを実行することができます。
ブックを開くパソコンが変わったり、ブックの移動・コピーが行われたり、ブックの名前が変更されたり、最初に「信頼のおけるブック」と認定した状況から何かしら変化が起こると、都度警告メッセージは表示されます。その時はまた初回起動時に[コンテンツの有効化]をクリックしましょう。
尚、[コンテンツの有効化]は自分で作成・もしくは社内の別の担当者が作成したものなど、発行元が信頼できる場合に限り行うように心がけましょう。
社内で出回っているファイルしか扱わないなら大丈夫では?とも思われがちですが、それらのファイルがすべて安全という保障はどこにもありません。マクロウィルスが仕込まれたファイルがメールに添付されて送られてくる事だってあります。出所のよくわからないExcelやWordのファイルが添付されているメールはむやみに開くな!と言われているのはそのためです。
セキュリティの警告が出ていない場合は?
リボン下にセキュリティ警告が出ていない、かつマクロも実行できないという状況であれば、マクロの実行に関する設定がどのようになっているかを確認しましょう。
[ファイル]タブ⇒「オプション」を順にクリックし、Excelのオプションを開きます。下図のように縦に並んだメニューに「オプション」の文字がない時は、「その他…」と表示されている箇所をクリックすると出てきます。
ナビゲーションウィンドウから「トラストセンター」をクリックします。
右側のウィンドウにある「トラストセンターの設定」をクリックします。
トラストセンターダイアログボックスが開きます。(Excelのオプションとは別ウィンドウになります)
ナビゲーションウィンドウから「マクロの設定」をクリックすると、マクロが含まれるブックを開いた時の動作がどのような設定になっているかを確認・変更する事ができます。(下図赤点線枠部分)
[開発]タブを表示している方は、「マクロのセキュリティ」ボタンをクリックするとこちらの画面をすぐ開く事ができます。
それぞれの項目を選択している時にどのような動きになるかは以下の通りです。
●警告せずにVBAマクロを無効にする
ここにチェックが入っている時は、問答無用でマクロは無効化されます。実行しようとすると、エラーメッセージが表示されます。
少し前に「マクロウィルス」が猛威を振るった時期に、何かあるといけないから念のためぜんぶ無効にしておこうと設定変更したのをすっかり忘れていた・・・という方も実際いらっしゃいます。マクロを全く使わないのであれば最も安全な選択肢ですが、使いたい時は変更が必要です。
●警告して、VBAマクロを無効にする
デフォルトで選択されている項目です。前項の「セキュリティの警告」は、ここにチェックが入っている場合に表示されるものです。
有効化する方法は前項の通りですが、[ファイル]タブ⇒情報をクリックして表示される「セキュリティの警告」から有効化することもできます。
「コンテンツの有効化」ボタンをクリックすると「コンテンツの有効化」と「詳細オプション」の2つの選択肢が表示されます。「コンテンツの有効化」は、リボン下に表示されていた有効化と同じで、クリックするとマクロが実行可能になります。
「詳細オプション」の方をクリックするとMicrosoft Office セキュリティオプションが開きます。
「このセッションのコンテンツを有効にする」にチェックを入れて[OK]をクリックすると、現在開いているファイルを閉じるまでの間だけマクロが実行可能になります。
一旦ファイルを閉じて開き直すと再び「セキュリティの警告」が表示されます。
●電子署名されたマクロを除き、VBAマクロを無効にする
電子署名とは、作成者(発行者)が「これは自分が作ったもので、改ざんもされていないですよ」という証明を付加する「デジタル実印」みたいなものです。信頼できる発行元の署名があるマクロだけ実行可能になり、ないものは無効化します。
※会社などから支給されているパソコンであらかじめここにチェックが入っていた時は、セキュリティ対策で「敢えて」そうしている可能性があります。変更して良いものか不明であればセキュリティ管理者に確認しましょう。
ここで一旦整理しておきましょう。
「警告せずにVBAマクロを無効にする」⇒マクロは使えない
「警告して、VBAマクロを無効にする」⇒マクロを有効化すれば使えるようになる
「電子署名されたマクロを除き、VBAマクロを無効にする」⇒電子署名されたマクロ以外は使えない
となります。状況に合わせて適切な項目にチェックを入れましょう。
尚、一番最後にある選択肢「VBAマクロを有効にする」については、便利そうだからという理由だけでチェックを入れるのは絶対にやめてください。
ここにチェックを入れるとすべてのマクロが警告なしですぐに使えるようになりますが、それはすなわち、出所のわからないブックの安全でないマクロであってもすぐ実行可能な状態になってしまうという事を意味します。利便性ばかりを追求するとそれなりにリスクもあるのだよ、という事ですね。
補足:Excel4.0マクロとは?
「マクロの設定」の一番下に「VBAマクロが有効な場合にExcel4.0のマクロを有効にする」というチェックボックスがありますが、ここは2021年11月中旬のOfficeの更新でデフォルトが無効(チェックなし)になりました。
Excel4.0マクロとは大雑把に言うとかなり大昔、それも一時期にしか使用されていなかったマクロで、VBAに置き換わって以降は現存するファイルで4.0を使用しているものはほぼ無いと思われます。また、悪意のあるファイルに利用される事も多いため、無効にしておくことが推奨されています。
その他の考えられる原因
以下は、マクロの設定は問題ないはずなのに実行できないという時の参考にしてください。
マクロ有効ブックとして保存されていない
もはや「そもそも論」になりますが、本当にそのファイルはマクロ有効ブックなのか?という点も念のため確認してみましょう。
下図は同じファイルをマクロ有効ブック(左)と通常のExcelブック(右)で保存した状態を比較したものですが、マクロ有効ブックは少しアイコンの形が異なっていますよね。
ファイルの拡張子でもマクロ有効ブックか否かは確認できます。エクスプローラーの[表示]タブで「ファイル拡張子」にチェックを入れると、マクロ有効ブックは「ファイル名.xlsm」、通常のブックは「ファイル名.xlsx」となっています。
Excelのブックをマクロを含めて保存する場合は、必ずマクロ有効ブックである「.xlsm」形式にする必要があります。元のブックを加工して別名で保存する際に、何の気なしにファイルの種類を見慣れた「Excel ブック」に変更してしまうと、保存時にマクロ情報は消えてしまいます。
あとからファイル拡張子を無理やり変えてもマクロ自体が保存されていないので何ともなりません。大もとのマクロ有効ブックからもう1度保存し直しましょう。
マクロが「個人用マクロブック」に保存されている
これは実際にマクロを作成した事のある方でないとわかりづらい内容かもしれませんが、作ったマクロの保存先は「作業中のブック」か「新しいブック」か「個人用マクロブック」のいずれかが選べるようになっています。
「作業中のブック」もしくは「新しいブック」に作成し、拡張子「.xlsm」のマクロ有効ブックで正しく保存されていれば、そのブックを開けばマクロは実行できます。
一方、「個人用マクロブック」とはマクロ専用のブックで、作成するとパソコンのローカルドライブにある既定のフォルダに保存されます。何かブックを開けば自動的に非表示の状態で起動するので、どのブックでも同じマクロを使う事ができるという利点がありますが、ローカル保存であるが故にパソコンが変わると使えなくなるという弱点もあります。
今まではマクロ有効ブックではなく普通のExcelブックでマクロを実行できていたというのであれば、マクロは個人用マクロブックに保存されていたと考えられます。
この場合は、元々使っていたパソコンに保存されている個人用マクロブックを、新たに使うパソコンにもコピーしておけば問題は解消されます。【Excel】個人用マクロブックを他のパソコンにコピーするの回でコピー手順を書いていますのでご参考にしていただければと思います。