これはExcel2016の画像です。
「トラストセンター」となっていますが、以前のバージョンでは「セキュリティセンター」と呼ばれていました。
内容や起動方法は全く変わっていません。
「ファイル」タブの「オプション」から「トラストセンター」に入り「トラストセンターの設定」に進むとこの画面になります。
「トラストセンター(セキュリティセンター)」では左メニューの「マクロの設定」を選択して下さい。
上半分のブロックが「マクロの設定」で以下のような機能となります。
選択項目 | 内容 |
---|---|
警告を表示せずにすべてのマクロを無効にする | 全くマクロを利用しない場合のモードです。 マクロを有効にして利用する場合はこのレベルでの運用はできません。 |
警告を表示してすべてのマクロを無効にする (デフォルト) |
これがデフォルトです。特段に要求がなければこのままで良いと思います。 一旦マクロは無効になるのですが、次の画像のようにリボンの下に「セキュリティの警告」が表示されて「コンテンツの有効化」ボタンでマクロを有効に戻せます。 この時点ではワークシートの内容は表示されているので、おかしなものを開いてしまったのかは判断でき、マクロ無効のままワークシートを利用することもできます。 |
デジタル署名されたマクロを除き、すべてのマクロを無効にする |
特に企業内で指定されない限り、このモードにすることはないと思います。 Excelワークブックレベルでの「デジタル署名」の取り扱いは、実は私は経験がありません。 本来、Excelワークブックは単なるドキュメントファイルであり、単なる「データファイル」ですから、 「デジタル署名」でどのように安全を担保するのかがよく解っていません。 過去を含めて私が務めていた所も、Excelワークブックの受け渡しを行なっていた取引先でもExcelに「デジタル署名」を利用した例はありませんでした。 |
すべてのマクロを有効にする(推奨しません。危険なコードが実行される可能性があります) | マクロが登録されたワークブックを開く場合でも何のメッセージも表示されず、全てのマクロが有効な状態で開かれます。 従って、悪意があるマクロが仕掛けられたワークブックを開く場合でもマクロが実行されてしまうので、開発関係の方であってもこのモードで運用するのはお勧めできません。 |
上記で「コンテンツの有効化」ボタンをクリックしたとしても、起動したマクロが別のマクロ有効ブックを開く動作をした場合は、
再度「セキュリティの警告」が表示されて、マクロが開こうとしているワークブックのマクロ有効許可が求められます。
ワークブックであればこの運用で問題ないのですが、ワークブックからアドインを開くような動作のマクロの場合は、
「セキュリティの警告」は表示されずに終了してしまいます。
当サイトの「配布の問題」で紹介しているのはまさにこの方法です。
アドインは元々Excelウィンドウに表示されないものなので「セキュリティの警告」も表示されません。
つまり、マクロ有効にはならないのです。
この事象を回避するにはアドインの収容フォルダを「信頼できる場所」に登録することがベストです。
当然、安全管理は運用側で行なうことが前提になります。
元々「配布の問題」の提起は「メンテナンスを考慮した仕組みの一元化」です。
Excelの場合はワークブック配布ではどんどん複製が作られてしまうので、マクロによる仕組みはアドインに集約させてその置き場所も一元化させるのが提言なのです。
この目的での話になりますが、アドインの収容フォルダを「信頼できる場所」に登録することが良い方法だと思います。
「VBEやVBProjectを操作するマクロ」というのは、場合によっては「マクロウィルス」と同じ土俵のものです。
正常なワークブックに悪意があるマクロを書き込んだり、書き換えたりができてしまいます。
現在のExcelではこの種のマクロは、
というエラーになって動作しません。
但し、健全な作業として「この種のマクロ」が必要なことも事実です。
当サイトのものだと「モジュール自動入れ替え機能」や、
「ExcelVBAキーワード使用一覧(Grepツール)」、
「ExcelVBAモジュール状況一覧」がこのことに該当します。
このためこのような「調査」や「保守」目的で、利用側が「安全である」と判断した環境でのみこの制限が解除できるようになっています。
同じく「トラストセンター(セキュリティセンター)」の「マクロの設定」の下半分にある
「開発者向けマクロ設定」の「VBAプロジェクト オブジェクト モデルを信頼する」にチェックを付けると先ほどのエラーは出なくなります。
但し、このような設定が必要な状況はおそらく一時的なことだと思われるので、この設定は一時的な変更として、終了後は元に戻すように運用すべきでしょう。
なお、この種のマクロはVBAプロジェクトがパスワードロックされている場合はこの設定にかかわらず動作できません。