#259 Access本体の閉じるボタンを無効化するには? VBA

Access本体のウィドウ右上にある[閉じる]ボタンを無効にして使えなくする方法です。この方法を使うことによって、Accessをメニューやコマンドボタンのプログラムなどからしか閉じられないようにすることができます。


それにはWindows APIを使いますので、まず標準モジュール等に以下の宣言を記述します。
Public Declare Function GetSystemMenu Lib "user32" _
   (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Public Declare Function DeleteMenu Lib "user32" _
   (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Public Declare Function DrawMenuBar Lib "user32" _
   (ByVal hwnd As Long) As Long
Public Const MF_BYCOMMAND = &H0
Public Const SC_CLOSE = &HF060

起動時の設定で最初に自動的に表示されるフォームの"Form_Load"イベントプロシージャなどで、ボタンの無効化を実行するようにします。もちろん、そのタイミングにこだわらず、任意のタイミングでこの処理を実行することも可能です。
Private Sub Form_Load()
'フォーム読み込み時

  Dim hMenu As Long

  'システムメニューのハンドルを取得
  hMenu = GetSystemMenu(Application.hWndAccessApp, 0)
  '閉じるボタンを無効にする
  DeleteMenu hMenu, SC_CLOSE, MF_BYCOMMAND
  'メニューを再描画
  DrawMenuBar Application.hWndAccessApp

End Sub
| Index | Prev | Next |



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