タグ:
(なし)
昔作った Excel のファイルを今日久しぶりに開いたのですが、ちょっとハマってしまったのでメモを残しておきます。
1. オレオレ証明書を有効にする方法
今回開こうとしたブックは Excel 2003 で作った .xls ファイルでした。
そのブックはマクロを多用していたのですが、セキュリティ上の理由から証明書をつけねばなりませんでした。(自分で使うだけのマクロなのに!)
そこでいわゆる「オレオレ証明書」をつけていたのです。
オレオレ証明書とは、信頼されている第三者機関に発行してもらったものではなく、あくまでも開発用などの目的で自分で使用するための証明書で、たとえば Office についてくる SELFCERT.EXE ("C:\Program Files\Microsoft Office\Office12\SELFCERT.EXE") というプログラムを使って作成できます。
話が少しそれましたが、Excel 2003 ではオレオレ証明書でもインストールすればすんなりマクロが有効になったような記憶がありますが、Excel 2007 ではセキュリティ的にとても厳しくなったようで、オレオレ証明書は原則として無効とみなされるようです。オレオレ証明書をつけたマクロを有効にしようとしても、デフォルトでは簡単には有効にできないわけです。
しかしながら、自分のためだけに使うマクロを開発しているわけなので、ベリサイン社などにお金を払って正式な証明書を発行してもらうのは大げさな話です。
そこでこのオレオレ証明書をなんとかして有効にしなければなりません。
その手順は以下のとおりです。
!!注意!!
以下の手順はセキュリティ的に問題があるかもしれませんので、もし問題に気付かれた方はご連絡ください。
以下の手順にセキュリティ的な欠陥があったとしても私は責任を取ることができませんので、自己責任でお願いします。
また、以下の手順は私が試行錯誤的に見つけ出した方法ですので、実はもっと簡単な方法があるかもしれません。
手順
1. マクロ付きのブックを開く
2. リボンと数式バーの間に 「セキュリティの警告 マクロが無効にされました。 [オプション...] 」と表示されるので、「オプション」ボタンを押す。
上のような警告が表示されない場合は、いったん Excel を再起動するとよいかもしれません。
それでも表示されなければ、Office メニューの Excel のオプションから「セキュリティセンターの設定」ボタンを押すか、リボンの「開発」タブの「マクロのセキュリティ」を押して、「セキュリティーセンター」ダイアログを表示させます。そこでマクロの設定を「警告を表示してマクロを無効にする」もしくは「デジタル署名されたマクロを除き、すべてのマクロを無効にする」に変更します。
3. 手順 2 でセキュリティの警告のオプションボタンを押すと以下のようなダイアログが表示されるので、「署名の詳細を表示」というリンクをクリック。このダイアログで、下の方に現れる選択肢が「不明なコンテンツから保護する」という選択肢 1 つしか現れていない場合、手順 2 と同様、セキュリティの設定を変更してください。
4. 以下のようなダイアログが現れるので、「証明書の表示」をクリック。
5. 以下のようなダイアログが現れます。「この証明書を信頼されたルート証明書機関のストアにインストールしてください」と書いていますので、その通りにしたいと思います。(セキュリティ的マズかったら指摘してください><)
ここではとりあえず「証明書のインストール」をクリック。
6. 「証明書のインポート ウィザード」が現れる。この画面では単に「次へ」をクリック。
7. 次のページでは、「証明書をすべて次のストアに配置する(P)」を選択して、「参照(R)」ボタンを押します。
8. 次に出てくるダイアログで、「信頼されたルート証明機関」を選択し、OK を押す。
9. ウィザードに戻ってきたら、証明書ストアが「信頼されたルート証明機関」になっていることを確認して「次へ」をクリック。
10. 「完了」をクリック。
11. 「セキュリティ警告」ダイアログが出てきますので、この記事を信頼するならば「はい」をクリックしてください。
12. 「正しくインポートされました」と表示されるはずなので、OK を押す。
13. 「Microsoft Office セキュリティ オプション」ダイアログまで OK を押して戻ってきて、「このコンテンツを有効にする」を選び、OK を押す。
これでマクロが使えるようになるはずです。
毎回ファイルを開くたびにセキュリティの警告が表示されてオプションからマクロを有効にするのが面倒な場合は、「この発行者のドキュメントをすべて信頼する」を選択してしまっても良いかもしれません。
(その場合はくれぐれも自分の証明書を他人に盗まれないように!)
以上は古い Excel 2003 の形式のファイルを開こうとしたらそれにマクロがついていたときの話ですが、Excel 2007 から導入されたマクロ有効ワークブック(.xlsm 形式)でもたぶん同様の手順で大丈夫だと思います。
2. リボンに「開発」タブを出す方法
さて、無事にマクロ付きのブックを開いて使うことができたわけですが、そのマクロを手直しするために編集しようとして困ってしまいました。
Visual Basic のエディタを開くことができません。
リボンを端から端まで何度も探しましたが、マクロを編集するためのボタンが見つかりません。
これは答えが簡単で、左上の丸いボタン(Office ボタン)を押してメニューを出し、そのメニューの右下に並んでいる二つのボタンのうち左側の「Excel のオプション(I)」をクリックして、以下のようなダイアログを出します。
図の中で赤い線で囲った部分のチェックを ON にして OK ボタンを押します。
すると、リボンの中に以下のような「開発」タブが表示されます。

このリボンの中の一番左にある「Visual Basic」ボタンを押せば無事 VBA マクロの編集ができるようになります。
3. 作成した関数(Function プロシージャ)をシート内で標準関数のように使う方法
「標準モジュール」に非 private な Function としてマクロを定義すれば、シート内で数式として使用できるようです。