И самое главное - отключение кнопки закрытия Access.
1) Создаем модуль VBA. В нем пишем следущее:
Это обязательно до всех процедур и функций
в начале модуля:
Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, _
ByVal bRevert As Long) As Long
Private Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As _
Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long
Const MF_GRAYED = &H1&
Const MF_BYCOMMAND = &H0&
Const SC_CLOSE = &HF060&
Далее делаем в этом модуле такую функцию:
Public Function EnabCloseBut(boolClose As Boolean) As Boolean
Dim hWnd As Long
Dim wFlags As Long
Dim hMenu As Long
' получаем hWnd окна Access
hWnd = Application.hWndAccessApp ' Me.hWnd
hMenu = GetSystemMenu(hWnd, 0)
If Not boolClose Then
' делаем кнопку серой, недоступной
wFlags = MF_BYCOMMAND Or MF_GRAYED
Else
' возвращаем все как было
wFlags = MF_BYCOMMAND And Not MF_GRAYED
End If
EnabCloseBut = EnableMenuItem(hMenu, SC_CLOSE, wFlags)
End Function
2) Чтобы запретить кнопку закрытия окна достаточно вызвать созданную функцию с параметром False
Например, можно создать макрос с именем "Autoexec" (именно таким именем, тогда он будет срабатывать при запуске Access) и в нем вписать "Запуск программы":EnabCloseBut(False), т.е. так как на рисунке.