Applicationオブジェクトには、開いているオブジェクトのコレクションを表す、下記のプロパティがあります。
- Forms
- Reports
- Modules
下記は、開いているフォーム、レポート、モジュールを列挙します。
Dim idx As Long
'開いているフォームを列挙します
For idx = 0 To Application.Forms.Count - 1
Debug.Print Application.Forms(idx).Name
Next f
'開いているレポートを列挙します
For idx = 0 To Application.Reports.Count - 1
Debug.Print Application.Reports(idx).Name
Next r
'開いているモジュールを列挙します
For idx = 0 To Application.Modules.Count -1
Debug.Print Application.Modules(idx).Name
Next m
目次
注意! なぜかFor Each
ではオブジェクトを列挙できません。
上記をFor Each
に変えただけのソースですが、列挙してくれるオブジェクトと、列挙してくれないオブジェクトがありました。(試したときはモジュールがNGでした。)
'開いているフォームを列挙します
Dim f as Access.Form
For Each f in Application.Forms
Debug.Print f.Name
Next f
'開いているレポートを列挙します
Dim r as Access.Report
For Each r in Application.Reports
Debug.Print r.Name
Next r
'開いているモジュールを列挙します
Dim m as Access.Module
For Each m in Application.Modules
Debug.Print m.Name
Next m
コメント