VBA 強制的にマクロを有効にする方法(セキュリティ警告非表示) - Excel ホームページ制作 | 墨田区

VBA 強制的にマクロを有効にする方法(セキュリティ警告非表示) – Excel

LINEで送る
Pocket

VBAで強制的にマクロを有効にする方法(セキュリティ警告非表示)をご紹介します。

マクロが記録されたブック、または VBA コードが記述されたブックを開くと、
セキュリティ警告の画面が表示されます。




【PR】マジか?!「アレ」してるLINEスタンプっていったい・・・


これは、マクロの設定によるものです。マクロの設定は以下のようなものがあります。
Excel 2010 の場合、「ファイル」-「オプション」-「セキュリティセンター」から「セキュリティ センターの設定」ボタンを押下すると以下のような設定画面が表示されます。
Excel マクロの設定画面
※Excel 2010での「マクロの設定」画面です。

デフォルトは、「警告を表示してすべてのマクロを無効にする」にチェックが入っています。
この場合、マクロが記録されたブックを開くと、以下のような画面が表示され、有効化するまでマクロが起動しません。
Excel セキュリティ警告 マクロ無効

また、マクロの設定を「警告を表示せずにすべてのマクロを無効にする」が設定されていた場合、マクロが有効になったかどうか利用者には判断できません。
マクロが無効の状態でブックを編集されると、せっかく作ったマクロが機能せず、予定外のブックの編集が可能になったりします。管理者としてはコレは避けたいですよね。

デジタル署名を追加する

マクロが無効の状態でブックが編集されるのを防ぐためには、デジタル署名をおこなうことをおすすめします。そうすれば、常にマクロを有効にできます。
・マクロ プロジェクトにデジタル署名を追加する – Excel
http://office.microsoft.com/ja-jp/excel-help/HA001231781.aspx


VBAで強制的にマクロを有効にさせる

もし、デジタル署名が手間であるようであれば、以下のような方法を試してください。

  1. ダミーシートを用意する。
  2. ダミーシートにシートの保護をかける。
  3. 編集用シートを用意し、シートを非表示をする。
  4. マクロが起動したら、ダミーシートを非表示にし、編集用シートを表示する。
  5. ブックを閉じるとき、ダミーシートを表示し、編集用シートを非表示にする。

これを実現できれば、マクロを実行しなければ編集用シートが表示されないので、
強制的に有効にしているのと同じことになります。

Excel ダミーシートと編集用シート



サンプルソース

このソースは、ThisWorkbook に記述してください。

Option Explicit

'**
' ワークブックオープン
'**
Private Sub Workbook_Open()
    ThisWorkbook.Unprotect Password:="password"
    On Error Resume Next
    If ThisWorkbook.Sheets("編集用").Visible <> True Then ThisWorkbook.Sheets("編集用").Visible = True
    If ThisWorkbook.Sheets("ダミー").Visible <> False Then ThisWorkbook.Sheets("ダミー").Visible = False
    ThisWorkbook.Protect Password:="password"
    'ThisWorkbook.RunAutoMacros Which:=xlAutoOpen
    On Error GoTo 0
    Exit Sub
End Sub

'**
' ワークブックを閉じる前
'**
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim Answer As Long
    ' 保存されているかチェック
    If ThisWorkbook.Saved = False Then
        Answer = MsgBox("Do you want to save the changes to the '" & ThisWorkbook.Name & "' ?", vbExclamation + vbOKCancel, "Microsoft Excel")
        Select Case Answer
        Case vbCancel
            Cancel = True
            Exit Sub
        End Select
    End If
    ThisWorkbook.Unprotect Password:="password"
    On Error Resume Next
    If ThisWorkbook.Sheets("ダミー").Visible <> True Then ThisWorkbook.Sheets("ダミー").Visible = True
    If ThisWorkbook.Sheets("編集用").Visible <> False Then ThisWorkbook.Sheets("編集用").Visible = False
    ThisWorkbook.Protect Password:="password"
    ThisWorkbook.Save
End Sub

まず、ブックの保護をおこなうためのパスワードを設定します。
※ここでは、password としています。

マクロが起動されたら、ブックの保護を解除します。

ThisWorkbook.Unprotect Password:="password"

そして、編集用シートを表示し、ダミーシートを非表示にします。

If ThisWorkbook.Sheets("編集用").Visible <> True Then ThisWorkbook.Sheets("編集用").Visible = True
If ThisWorkbook.Sheets("ダミー").Visible <> False Then ThisWorkbook.Sheets("ダミー").Visible = False

そして、ブックを保護します。

ThisWorkbook.Unprotect Password:="password"

ThisWorkbook内に、Workbook_Open() を記述すると、標準モジュールで記述された Auto_Open() が起動しません。
もし、標準モジュール内に Auto_Open() があるようであれば、以下のコメントを解除してください。

'ThisWorkbook.RunAutoMacros Which:=xlAutoOpen

そしてブックを閉じる前に、再びダミーシートを表示し、編集用シートを非表示にします。
これにより、次回開くときに、ダミーシートが表示されて、マクロが有効になるまで編集用シートの変更ができなくなります。

If ThisWorkbook.Sheets("ダミー").Visible <> True Then ThisWorkbook.Sheets("ダミー").Visible = True
If ThisWorkbook.Sheets("編集用").Visible <> False Then ThisWorkbook.Sheets("編集用").Visible = False

保存されているかチェックしているのは、例えば編集用シートに何か変更をおこない、上書き保存したのに、閉じる前に再び保存を促すメッセージが表示されるのを防ぐためと、保存しないと再度ブックを開いたときにダミーシートが表示されないことを防ぐためです。
※マクロ内でシートを表示したり、非表示にしたりすると変更したとみなされます。


テスト

早速実行してみましょう。
マクロが無効な状態では、ダミーシートだけが表示されます。
マクロが無効の状態

マクロを有効にすると、編集用シートが表示されます。
マクロが有効な状態

ブックを保護しているので、シートの再表示はできません。
シートの再表示不可


これで、利用者がマクロが動作しているかどうかわからなくなることはありませんね。


おつかれさまでした。

LINEで送る
Pocket

この記事がお役に立ちましたら シェア をお願いいたします。

Office / VBAの勉強が思うように進まないときは!

Office / VBAの勉強が思うように進まないのであれば、プロに直接質問ができる プログラミングスクール を検討してみてはいかがでしょうか?プログラミングスクールに申し込めば、短期間で一定のスキルを身に着けることができます!

Office / VBAコースあり!未経験者にウケてる KENスクール パソコンスクール・パソコン教室 【KENスクール】個別指導のWeb-DTP・OA・IT PCスクール

理解度や学習ペースに合わせて、一人ひとりが納得して前進できる授業を提供してくれるのが特徴です。特に課題製作は現場さながらで、実務に即したものとなっていますので短期でのスキルアップが望めます。自宅学習のサポートも充実していて、授業内容をいつでもビデオで振り返ることができるのもうれしいですね。好きな時間に好きな場所で、無理なくスケジューリングできるので、仕事の忙しい方でも柔軟に学ぶことができますよ。

更にさらに、なんと 就職サポート をしてくれるというのですから驚きです!!

履歴書の書き方から面接指導、求人の紹介など、具体的な就職先まで提案してくれるんです!私も「もっと早く出会いたかったなぁー、こんなスクール」・・・って思っちゃいました^^

東京・神奈川・愛知・大阪を営業エリアとされています。
まずは気軽に 無料体験予約 に申し込んでみるのもアリですよ。


コメントを残す

お名前 (必須)
メールアドレス
(アドレスは公開されません)

コメント(必須)

Trackback URL