Application.Forms等を使ったオブジェクト一覧の取得

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
よかったらシェアしてね!

この記事を書いた人

コメント

コメントする

目次
閉じる