プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
AccessVBA、起動時のShiftキーを無効にする方法
AccessさんってのはShiftキーを押しながら起動すると
起動時のあれやこれやを飛ばして開けたりします。
これが嫌な人は嫌なのですね。

私の友人もそんな人のひとりでした。
コード触られたくないよー、見られたくないよーとのことです。
「VBで作ったら(--?」と言ったら哀しそうな顔をされました。
「じゃあmdeにしたら(--?」と言ったら微妙な顔をされました。
仕方ないなー。
調べてあげますよ、感謝しろ。

っつーわけでこんなんφ(--)


  '関数呼び出し
  chgProperty("AllowBypassKey", dbBoolean, false)



  '関数
  Function chgProperty( _
    strPropertyName As String, _
    intPropertyType As DAO.DataTypeEnum, _
    varPropertyValue As Variant) _
    As Boolean

    On Error GoTo chgProperty_Err

    Const conPropNotFoundError = 3265

    Dim db As DAO.Database
    Dim prp As DAO.Property

    Set db = CurrentDb
    db.Properties.Delete strPropertyName
    Set prp = db.CreateProperty( _
      strPropertyName, _
      intPropertyType, _
      varPropertyValue, _
      True)
    db.Properties.Append prp
    chgProperty = True

  chgProperty_Exit:
    Set prp = Nothing
    Set db = Nothing
    Exit Function

  chgProperty_Err:
    Select Case Err.Number
    Case conPropNotFoundError
      Err.Clear
      Resume Next
    Case Else
      MsgBox Err.Description, vbInformation, Err.Number
    End Select
    Resume chgProperty_Exit

  End Function



うむ、長ったらしくてよく分からんカモですね(--;
なんかタラタラ書いていますが
大事なのはここですφ(--)

    Dim db As DAO.Database
    Dim prp As DAO.Property

    Set db = CurrentDb
    
db.Properties.Delete strPropertyName
    Set prp =
db.CreateProperty( _
      strPropertyName, _
      intPropertyType, _
      varPropertyValue, _
      True)
    
db.Properties.Append prp



"AllowBypassKey"ってプロパティ値を一回削除して
もう一回値falseで作ってるだけ。

「db.Properties.Delete strPropertyName」で削除するときに
"AllowBypassKey"プロパティが無いとエラー・・なのですが、
「chgProperty_Err:」に入って
「Case conPropNotFoundError」に入って
「Resume Next」で戻ってきます。

ちなみに「Resume Next」ってーのは
「エラーの次のステートメントから再開」です。
エラーステートメントをすっ飛ばすと思いねぇ。

そんでもって一回プロパティ"AllowBypassKey"を削除したら
もっかい"AllowBypassKey"を値「false」で作ってる訳です。
今回は「varPropertyValue」に関数呼び出し元でfalseを設定していますが、
ここにtrueを設定するとshiftキーが有効になります。

つまり"AllowBypassKey"プロパティの値を「true」にするとshiftキー有効、
つまり"AllowBypassKey"プロパティの値を「false」にするとshiftキー無効です。

なんでこんなにしつこく書くかと言いますと、
何らかの方法で"AllowBypassKey"プロパティの値を「true」にできるように実装しておかないと
二度と戻せなくなっちゃうかもしれないのでお気をつけて(ノ∀`)な訳です。

私はパラメータ付でmdbを起動した場合のみshiftキーが有効になるようにしたりしてますが
そこら辺はお好きなように工夫したって下さい。

戻せなくなっても私は責任持てないので気を付けて下さいね(^^;
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:Access VBA  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト