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を使用する時は、このように
するものだと丸暗記して下さい。
|