ACCESS「テーブル・レポート・フォーム・クエリ・モジュール」のオブジェクト数を調べる方法
目次
はじめに
データベース管理において、テーブル、クエリ、フォーム、レポート・標準モジュールとクラスモジュールなどのオブジェクトの正確な数を知りたいことがあります。システムの規模間などを知るうえではとても重要になります。
Microsoft Accessでこれらのオブジェクト数を簡単に把握する方法をご紹介します。この記事を読むことで、VBAスクリプトを使ってデータベースオブジェクトの数を自動で数える方法を紹介します。
ACCESSでテーブル・クエリ・フォーム・レポート・モジュールのオブジェクトの数を出力するプログラム
STEP
標準モジュールを作成
STEP
標準モジュールに以下のコードを貼り付ける
Sub CountDatabaseObjects()
Dim db As Database
Set db = CurrentDb()
Dim tableCount As Integer
Dim reportCount As Integer
Dim formCount As Integer
Dim queryCount As Integer
Dim moduleCount As Integer ' モジュールの数
tableCount = 0
reportCount = 0
formCount = 0
queryCount = 0
moduleCount = 0 ' 初期化
' テーブルの数をカウント
Dim tbl As TableDef
For Each tbl In db.TableDefs
If Not tbl.Attributes And dbSystemObject Then
tableCount = tableCount + 1
End If
Next tbl
' レポートの数をカウント
Dim rpt As AccessObject
For Each rpt In Application.CurrentProject.AllReports
reportCount = reportCount + 1
Next rpt
' フォームの数をカウント
Dim frm As AccessObject
For Each frm In Application.CurrentProject.AllForms
formCount = formCount + 1
Next frm
' クエリの数をカウント
Dim qry As QueryDef
For Each qry In db.QueryDefs
If Left(qry.Name, 4) <> "MSys" Then
queryCount = queryCount + 1
End If
Next qry
' モジュールの数をカウント
Dim mdl As AccessObject
For Each mdl In Application.CurrentProject.AllModules
moduleCount = moduleCount + 1
Next mdl
' 結果を表示
MsgBox "テーブルの数: " & tableCount & vbCrLf & _
"レポートの数: " & reportCount & vbCrLf & _
"フォームの数: " & formCount & vbCrLf & _
"クエリの数: " & queryCount & vbCrLf & _
"モジュールの数: " & moduleCount, vbInformation, "オブジェクトのカウント"
End Sub
STEP
F5でプログラムを実行する
注意すべきポイント①テーブル数にはACCESSが使うシステムオブジェクトが含まれる
テーブルとクエリにはシステムオブジェクトしてACCESS自身が使うものがあります。12個が対象になります。
注意すべきポイント②クエリ数にはフォームと連携しているクエリも含まれる
クエリの数には、フォームやレポートなどに設定しているクエリの数も含まれます。
画像では、クエリは1つしかありませんが、実行結果は3と出力されています。
まとめ
今回は、ACCESSでテーブル・クエリ・フォーム・レポート・モジュールのオブジェクト数を知る方法として、プログラムを紹介しました。
単純に数=複雑さではありませんが、システムの規模を知る上では指標になりますので、ぜひ今回ご紹介したプログラムを使ってみてください。
コメント