#524 VBAの有効/無効に応じて起動するフォームを切り替える方法 フォーム、VBA

Accessでは、特に設定のない場合、マクロやVBAに対するセキュリティ機能によって起動時にセキュリティ警告メッセージが表示され、マクロやVBAを有効にしないとそれらが一切動作しないようになっています。
セキュリティ警告

自分自身でデータベースを使う場合には、あらかじめセキュリティセンターでセキュリティ機能を無効にしたり特定の場所にあるデータベースを信頼させるようにしたりすることでこのメッセージを表示させないようにすることができますが、データベースを他の人に配布するような場合には、起動時にセキュリティ警告メッセージからの処置手順を説明しておく必要があるかもしれません。

そのような場合、VBAがもし無効ならどのような手順でマクロやVBAを有効にするかを説明した画面を表示させることができます。本来の起動時に初期表示されるフォーム(スタートアップフォーム)と、VBAを有効にする手順を示したフォームの2つを用意し、それらの起動方法をちょっと工夫するだけで実現できます。


以下にその一例を示します。
  1. まず、本来のスタートアップフォーム(メインメニュー画面など)をデザインします。・・・・この例では名前は「スタートアップフォーム」
    本来のスタートアップフォーム

  2. 次に、VBAが無効時の操作手順などを示した説明用のフォームをデザインします。・・・・この例では名前は「セキュリティ解除フォーム」
    説明用のフォーム

  3. 後者のフォームにおいて、次のようなイベントプロシージャを記述します。

    Private Sub Form_Load()
    'フォーム読み込み時
      
      'このフォームを閉じて本来のスタートアップフォームを開く
      DoCmd.Close acForm, Me.Name
      DoCmd.OpenForm "スタートアップフォーム"

    End Sub


    一見すると、自分のフォームを閉じて別のフォームを開くだけの何の意味も持たないプログラムに見えます。しかし、VBAが無効な状態ではこのコードは実行されませんので、自分のフォームも閉じず別のフォームも開かれません。つまり、説明用のフォームが開いた状態ですべての処理が中断される形となります。
    そしてVBAを有効にした時点でこのコードが実行され、本来のスタートアップフォームが開かれます。
    もし初めからVBAが有効なら、直ちに本来のスタートアップフォームが開かれますので、見た目には説明用フォームはパスされて表示されないことになります。

  4. 最後にAccessのオプションにおいて、本来のスタートアップフォームではなく、後者の説明用フォームの方を起動時に表示されるフォームとして指定します。
    起動時の設定

実行例:

データベースを開くとセキュリティ警告メッセージが表示されるとともにその説明用フォームが表示される
説明用フォームが表示される

[オプション]をクリックしてVBAを有効にするとプログラムが実行されて本来のスタートアップフォームが開く
本来のスタートアップフォームが開く
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved