Excelはマクロウィルス対策として、マクロを持つワークブックを開く時の制限の設定を行なうようになっています。

セキュリティ設定と動作

これはExcel2016の画像です。

トラストセンターの「マクロの設定」

「トラストセンター」となっていますが、以前のバージョンでは「セキュリティセンター」と呼ばれていました。 内容や起動方法は全く変わっていません。
「ファイル」タブの「オプション」から「トラストセンター」に入り「トラストセンターの設定」に進むとこの画面になります。



「トラストセンター(セキュリティセンター)」では左メニューの「マクロの設定」を選択して下さい。
上半分のブロックが「マクロの設定」で以下のような機能となります。

選択項目 内容
警告を表示せずにすべてのマクロを無効にする 全くマクロを利用しない場合のモードです。
マクロを有効にして利用する場合はこのレベルでの運用はできません。

警告を表示してすべてのマクロを無効にする
(デフォルト)
これがデフォルトです。特段に要求がなければこのままで良いと思います。
一旦マクロは無効になるのですが、次の画像のようにリボンの下に「セキュリティの警告」が表示されて「コンテンツの有効化」ボタンでマクロを有効に戻せます。
この時点ではワークシートの内容は表示されているので、おかしなものを開いてしまったのかは判断でき、マクロ無効のままワークシートを利用することもできます。

デジタル署名されたマクロを除き、すべてのマクロを無効にする

特に企業内で指定されない限り、このモードにすることはないと思います。
Excelワークブックレベルでの「デジタル署名」の取り扱いは、実は私は経験がありません。 本来、Excelワークブックは単なるドキュメントファイルであり、単なる「データファイル」ですから、 「デジタル署名」でどのように安全を担保するのかがよく解っていません。
過去を含めて私が務めていた所も、Excelワークブックの受け渡しを行なっていた取引先でもExcelに「デジタル署名」を利用した例はありませんでした。

すべてのマクロを有効にする(推奨しません。危険なコードが実行される可能性があります) マクロが登録されたワークブックを開く場合でも何のメッセージも表示されず、全てのマクロが有効な状態で開かれます。
従って、悪意があるマクロが仕掛けられたワークブックを開く場合でもマクロが実行されてしまうので、開発関係の方であってもこのモードで運用するのはお勧めできません。


それではデフォルトの「警告を表示してすべてのマクロを無効にする」の状態でマクロを持つワークブックを開いてみます。

セキュリティの警告

このようにリボンの下に「セキュリティの警告」が黄色いバーが表示されます。
「コンテンツの有効化」ボタンをクリックしなければマクロは無効のままですが、ワークシート等は操作できるようになります。
「マクロを利用して良いのか(安全なのか)」の判断はそのワークブックを利用する側に委ねられているわけです。 第三者や何らかのシステムが安全かどうかを判断してくれるわけではありません。

「コンテンツの有効化」ボタンをクリックすると、マクロが有効になり起動時マクロがあれば動作が開始されます。

信頼済みドキュメントへの登録

通常はこのように信頼済みドキュメントへの登録のメッセージが表示され、ここで「はい」を選択したドキュメントは「安全なもの」として登録され、 次回以降の起動時には「セキュリティの警告」は表示されなくなります。 但し、そのドキュメントを他者が改変した場合は再度「セキュリティの警告」が表示されるようになります。


トラストセンターの「信頼済みドキュメント」

「トラストセンター(セキュリティセンター)」の「信頼済みドキュメント」です。
「信頼済みドキュメント」はここに登録されているわけですが、個々のドキュメント名などを参照できるようにはなっていません。 また、本来信頼すべきでないドキュメントを「信頼済みドキュメント」に登録してしまった場合は「クリア」ボタンで一括削除はできますが、 個々のドキュメントを指定して「信頼済みドキュメント」から排除することはできません。



この画像の左メニューに「信頼できる場所」というものがあります。
「場所」とは「フォルダ」です。「信頼済みドキュメント」に登録するようなドキュメントが配置されているフォルダををここに登録することで、 そのフォルダにあるドキュメントをまとめて「信頼済みドキュメント」として扱うことができます。
「信頼できる場所」にフォルダを登録して運用する場合は、そのフォルダに収容されているドキュメントは全て信頼された状態(安全なもの)となり、 しかも他者が更新を行なっても信頼された状態のままになるので、不特定な他者がアクセスできないなどの管理は運用側で行なう必要があります。

戻る 先頭に戻る

ワークブックからマクロでアドインを開く場合は?

アドインはExcel上にウィンドウ表示されません。従って警告も表示されません。

上記で「コンテンツの有効化」ボタンをクリックしたとしても、起動したマクロが別のマクロ有効ブックを開く動作をした場合は、 再度「セキュリティの警告」が表示されて、マクロが開こうとしているワークブックのマクロ有効許可が求められます。



ワークブックであればこの運用で問題ないのですが、ワークブックからアドインを開くような動作のマクロの場合は、 「セキュリティの警告」は表示されずに終了してしまいます。 当サイトの「配布の問題」で紹介しているのはまさにこの方法です。



アドインは元々Excelウィンドウに表示されないものなので「セキュリティの警告」も表示されません。 つまり、マクロ有効にはならないのです。



この事象を回避するにはアドインの収容フォルダを「信頼できる場所」に登録することがベストです。 当然、安全管理は運用側で行なうことが前提になります。
元々「配布の問題」の提起は「メンテナンスを考慮した仕組みの一元化」です。 Excelの場合はワークブック配布ではどんどん複製が作られてしまうので、マクロによる仕組みはアドインに集約させてその置き場所も一元化させるのが提言なのです。



この目的での話になりますが、アドインの収容フォルダを「信頼できる場所」に登録することが良い方法だと思います。

戻る 先頭に戻る

VBEVBProjectを操作するマクロがエラーになる。

セキュリティ上では当然なことですが....

VBEVBProjectを操作するマクロ」というのは、場合によっては「マクロウィルス」と同じ土俵のものです。 正常なワークブックに悪意があるマクロを書き込んだり、書き換えたりができてしまいます。



現在のExcelではこの種のマクロは、

実行時エラー '1004': プログラミングによる Visual Basic プロジェクトへのアクセスは信頼性に欠けます

というエラーになって動作しません。



但し、健全な作業として「この種のマクロ」が必要なことも事実です。 当サイトのものだと「モジュール自動入れ替え機能」や、 ExcelVBAキーワード使用一覧(Grepツール)ExcelVBAモジュール状況一覧」がこのことに該当します。



このためこのような「調査」や「保守」目的で、利用側が「安全である」と判断した環境でのみこの制限が解除できるようになっています。

VBAプロジェクトオブジェクトモデルを信頼する

同じく「トラストセンター(セキュリティセンター)」の「マクロの設定」の下半分にある 「開発者向けマクロ設定」の「VBAプロジェクト オブジェクト モデルを信頼する」にチェックを付けると先ほどのエラーは出なくなります。



但し、このような設定が必要な状況はおそらく一時的なことだと思われるので、この設定は一時的な変更として、終了後は元に戻すように運用すべきでしょう。



なお、この種のマクロはVBAプロジェクトがパスワードロックされている場合はこの設定にかかわらず動作できません。

戻る 先頭に戻る