Access VBAでSysCmd(acSysCmdGetObjectStateを使うと、オブジェクトが開いているかどうか等の状態を取得できます。
オブジェクトとは「テーブル」「クエリ」「フォーム」「レポート」「マクロ」「モジュール」になります。
■ Access実行画面
「テーブル1の状態」ボタンをクリックすると、右のテキストボックスにテーブル1の状態が表示されます。
「フォーム1の状態」ボタンをクリックすると、右のテキストボックスにフォーム1の状態が表示されます。
■オブジェクトの状態取得のSysCmdの書式:
SysCmd(acSysCmdGetObjectState,オブジェクトタイプ,オブジェクト名)
・オブジェクトタイプ
|
オブジェクト |
|
定数 |
|
値 |
|
|
|
|
|
|
|
テーブル |
|
acTable |
|
0 |
|
クエリ |
|
acQuery |
|
1 |
|
フォーム |
|
acForm |
|
2 |
|
レポート |
|
acReport |
|
3 |
|
マクロ |
|
acMacro |
|
4 |
|
モジュール |
|
acModule |
|
5 |
・状態
|
定数 |
|
値 |
|
意味 |
|
|
|
|
|
|
|
acObjStateOpen |
|
1 |
|
開いている |
|
acObjStateDirty |
|
2 |
|
変更後保存されていない |
|
acObjStateNew |
|
4 |
|
新しい |
■ Access VBA 実行コード
Option Compare Database
Option Explicit
Private Sub コマンド0_Click()
Dim lret
lret = SysCmd(acSysCmdGetObjectState, acTable, "テーブル1")
Me!テキスト6 = lret
End Sub
Private Sub コマンド5_Click()
Dim lret
lret = SysCmd(acSysCmdGetObjectState, acForm, "フォーム1")
Me!テキスト8 = lret
End Sub