Accessウィンドウのサイズを固定する

2019年6月17日VBA

Fix the size of the Access window

MDBファイルを開いたときに、Accessアプリケーションのウィンドウの大きさを指定して、サイズ変更できないようにしたい。

このような質問の回答に用意したコードです。

下記の旧ブログの記事の内容を、64bit版Officeにも対応するように加筆修正したものです。

Office2010l以降の64bit版と32bit版に対応してます。ただし、64bit版環境がないので動作確認はしてません。64bit版環境で実行して不具合があれば報告してください。
Office2007以前にも対応させる必要がある場合は、下記リンクを参考に書き換えてください。

WindowsAPI 宣言

WindowsAPI を利用します。
標準モジュールを作成して、宣言部に下記のコードを記述(コピペ)します。

Option Compare Database
Option Explicit

    Public Declare PtrSafe Function SetWindowPos Lib "user32" _
                                    (ByVal hwnd As LongPtr, _
                                     ByVal hWndInsertAfter As LongPtr, _
                                     ByVal X As Long, ByVal Y As Long, _
                                     ByVal cx As Long, ByVal cy As Long, _
                                     ByVal wFlags As Long) As Long
    Public Declare PtrSafe Function GetSystemMenu Lib "user32" _
                                    (ByVal hwnd As LongPtr, _
                                     ByVal bRevert As Long) As LongPtr
    Public Declare PtrSafe Function RemoveMenu Lib "user32" _
                                    (ByVal hMenu As LongPtr, _
                                     ByVal nPosition As Long, _
                                     ByVal wFlags As Long) As Long

Public Const SWP_NOMOVE = &H2
Public Const SWP_NOSIZE = &H1
Public Const HWND_TOP = &H0
Public Const SC_SIZE = &HF000
Public Const SC_MAXIMIZE = &HF030
Public Const SC_CLOSE = &HF060
Public Const SC_RESTORE = &HF120
Public Const MF_BYCOMMAND = &H0&

イベントプロシージャ

ファイルを起動したときに最初に開くフォーム(メニューフォームなど)の開くときのイベントプロシージャに下記のコードを記述(コピペ)します。

ファイルを起動したときに最初に開くフォームは、ファイル→オプション→現在のデータベース→フォームの表示 で指定できます。

Private Sub Form_Open(Cancel As Integer)
    Dim hwnd As LongPtr
    hwnd = Application.hWndAccessApp

    SetWindowPos hwnd, HWND_TOP, 0, 0, 800, 600, SWP_NOMOVE
    hwnd = GetSystemMenu(hwnd, 0)
    RemoveMenu hwnd, SC_SIZE, MF_BYCOMMAND

End Sub

800 * 600 の大きさに固定します。800、600の数値をお好みに変更してご利用ください。

解説

SetWindowPos でウィンドウサイズを 800ピクセル×600ピクセルに指定ます。SWP_NOMOVE は位置は現状のまま変更しないという意味です。
RemoveMenu でウィンドウのシステムメニューから、サイズ変更コマンドを削除します。これでウィンドウのサイズ変更はできなくなります。

サンプルファイル

サンプルファイルがダウンロードできます。