●概要●
AccessではDocmdオブジェクトのMaximize/Minimaize/Restoreメソッドが用意されていますが、これらのメソッドはアプリケーション内のオブジェクトのウィンドウを操作するものであり、アプリケーション自体を操作する手法は用意されていません。
今回はWin32API関数を使用して、アプリケーションウィンドウを操作する方法を説明します。
●準備●
新規標準モジュールを作成し、以下のプロシージャを記述して下さい。
● サンプルコード ■
' ■■ 宣言部 ■■
Option Compare Database
Option Explicit
Global Const SW_SHOWNORMAL = 1
Global Const SW_SHOWMINIMIZED = 2
Global Const SW_SHOWMAXIMIZED = 3
Declare Function ShowWindow Lib "User32" (ByVal Hwnd As Long, _
ByVal nCmdShow As Long) As Long
' ■■ 関数部 ■■
'Access アプリケーションウィンドウを最大化表示します。
Function MaximizeAccess()
Dim Maxit As Long
Maxit = ShowWindow(hWndAccessApp, SW_SHOWMAXIMIZED)
End Function
'Access アプリケーションウィンドウを最小化表示します。
Function MinimizeAccess()
Dim Minit As Long
Minit = ShowWindow(hWndAccessApp, SW_SHOWMINIMIZED)
End Function
'Access アプリケーションウィンドウを復元します。
Function RestoreAccess()
Dim Restoreit As Long
Restoreit = ShowWindow(hWndAccessApp, SW_SHOWNORMAL)
End Function
'動作確認プロシージャ
Private Sub WindowTest()
MsgBox "最大化します"
Call MaximizeAccess
MsgBox "最小化します"
Call MinimizeAccess
MsgBox "元に戻します"
Call RestoreAccess
Call RestoreAccess
End Sub
●動作確認●
動作確認用プロシージャ WindowTestを実行します。メッセージが出ると共にアプリケーションウィンドウの大きさが変更されることを確認して下さい。
●詳細●
これらのAPI関数はAPIの中でも非常に簡単な部類のものです。サンプルではそれぞれの機能を分かりやすくするために別の関数として作成していますが、Declare宣言を見ても分かる通り、実は1つの関数の引数を変化させることによって動作が変更されます。ですから、関数を1つ作成して引数によって最大化・最小化・復元を行うことも簡単に出来るでしょう。是非、ご自身で作ってみて下さい。
またAPI関数は必ず戻り値を受けるための変数を用意する点、その変数はLong型であることに注意してください。
これはAPI関数がそもそもC言語のために用意されていて、VBとは言語仕様が異なることが原因です。とにかくVB(VBA)からAPIを使用する時は、このようにするものだと丸暗記して下さい。