Access本体のボタンやシステムメニューを無効化する
  Win32APIを使用して、Accessの本体右上の閉じる・最小化・最大化・元に戻
すボタンと、システムメニュー(タイトルバー左端のアイコンをクリックした時
に出るメニュー)を無効化する方法を説明します。

● 準備 ●

  新規の標準モジュールを用意し、以下のプロシージャを記述します。


● サンプル ●

Option Compare Database
Option Explicit

'【引数説明】
'DeleteMenuの第2引数のを変えると、使えなくなる機能が変わります。
'6-閉じる       4-最大化    3-最小化
'2-サイズ変更   1-移動      0-元のサイズに戻す
'※ 注意
'   機能を使用不可にした時に数字がシフトするので、複数の機能を使用不可
'   にする場合は数字が大きい方からDeleteMenuして下さい
Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, _
                                             ByVal bRevert As Long _
                                           ) As Long

Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, _
                                          ByVal nPosition As Long, _
                                          ByVal wFlags As Long _
                                        ) As Long

Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long _
                                          ) As Long

'■ 実行プロシージャ
Public Function DeleteAppMenu()

    'エラートラップ
    On Error GoTo Func_Err:

    '閉じるを使用不可にする
    DeleteMenu(GetSystemMenu(Application.hWndAccessApp, False), 6, 1024)

    'サイズ変更を使用不可にする
    DeleteMenu(GetSystemMenu(Application.hWndAccessApp, False), 2, 1024)

    '元のサイズに戻すを使用不可にする
    DeleteMenu(GetSystemMenu(Application.hWndAccessApp, False), 0, 1024)

    'メニューを再描画する
    DrawMenuBar(GetSystemMenu(Application.hWndAccessApp, False))

Func_Exit:
    Exit Function

Func_Err:
    MsgBox "Error Number : " & Err.Number & vbCrLf & Err.Description
    DoCmd.Quit acQuitSaveAll
    Resume Func_Exit:
End Function


● 詳細 ●

  サンプルでは、閉じるボタン・元に戻すボタン、システムメニューの閉じる
サイズ変更・元に戻す、の各機能を無効化します。
  GetSystemMunu関数によってAccessのシステムメニューのハンドルを取得し、
DeleteMenuBar関数で実際に無効化、DrawMenuBar関数でシステムメニューを再
描画し、実際の環境に反映させています。

  この関数を使用することにより、ユーザーの操作を全てカスタムメニュー経
由にさせる事などが出来るでしょう。

  ちなみに、一度無効にしたボタン・機能もAccessを再起動すると復活します
ので、常時各機能を無効化するのであれば、AutoExecマクロでこの関数を実行
させる必要があります。


Access97/2000



戻る


Excel Word Access VBA! モーグ