2020.1.28

アプリ起動時のShiftキーを無効にする(AllowBypassKey)

Accessで作成したアプリの起動時、デフォルトではShiftキー押しながら起動するとスタートアッププロパティやAutoExecマクロを実行せずに起動することができますが、運用時にはそれすらもさせたくない場合があります。

こういった場合、プロパティ「AllowBypassKey」を設定することで、Shiftキーでの起動を無効にすることができます。

目次

  • プロパティ「AllowBypassKey」の設定方法
  • Shiftキーを無効に設定した後に有効に戻す方法
  • 参考リンク

プロパティ「AllowBypassKey」の設定方法

プロパティ「AllowBypassKey」は画面から追加や変更ができないので、設定するためにはVBAにコードを直接書く必要があります。

以下、プロパティ「AllowBypassKey」を設定するためのコードになります。


Public Function InitApp()
  Call SetAllowBypassKey(False)
End Function

Function SetAllowBypassKey(propValue As Variant) As Boolean
  Const propName As String = "AllowBypassKey"
  
  Dim dbs As Object
  Set dbs = CurrentDb
  
  On Error GoTo Err_Function
  dbs.Properties(propName) = propValue
  
  SetAllowBypassKey = True
  
Exit_Function:
  Exit Function
  
Err_Function:
  If Err = 3270 Then      ' property not found
      Dim prp As Variant
      Set prp = dbs.CreateProperty(propName, dbBoolean, propValue)
      dbs.Properties.Append prp
      Resume Next
  Else
      ' Unknown error.
      SetAllowBypassKey = False
      Resume Exit_Function
  End If
End Function

上記コードのInitAppをAutoExecマクロなどで呼び出すようにすると、一度実行した後、次回の起動からはShiftキーを押しながらの起動が効かなくなっています。

SetAllowBypassKeyでやっていることは、基本的にはAllowBypassKeyの値を設定(True or False)しているだけですが、デフォルトではプロパティが存在しないので、設定しようとしてプロパティがなければ(エラーコード:3270)、Boolean型のプロパティ「AllowBypassKey」を新しく作成する、という流れになります。

プロパティ「AllowBypassKey」にFalseを設定すると、Shiftキーでの起動が無効になり、Trueまたはプロパティ自体が存在しない場合はShiftキーでの起動が有効になります。

Shiftキーを無効に設定した後に有効に戻す方法

一度設定したAllowBypassKeyプロパティの値を変更する場合、アプリ起動後に「F11」を押してナビゲーションウィンドウからVBAコードを修正したり、コードを修正したくないなら、テーブルで True/False の状態を保持しておき、必要な時にテーブルの値を変更して対応する、といった方法があります。

参考リンク

Access】関連記事