23 フォーム系 - 既定のビューがデータシートであるフォームを収集する

カレントデータベース内にある各フォームを探索し、その「既定のビュー」プロパティが”データシート”であるフォーム名を収集します。
  1. まず「Database」オブジェクトの変数である「dbs」に”カレントデータベース”をセットします。

  2. 次に「Container」オブジェクトの変数である「ctn」に、カレントデータベースの「Containers」コレクション内にある”フォーム(Forms)”をセットします。これによってそのオブジェクト変数に”データベース内のフォームのグループ全体への参照”がセットされます。

  3. Container内にあるすべてのフォームのコレクションである「Documents」の中から、For Each〜Nextステートメントでひとつずつフォーム情報を取り出し、「Document」オブジェクトの変数「doc」にセットしていきます。

  4. 取り出されたひとつのフォーム情報のうち、フォーム名である「Name」プロパティの値を、ここではそれを何度か使用するため、いったん変数「strFormName」にセットします。

  5. フォーム内のオブジェクトを参照するので、そのフォームを”デザインビュー”(引数に「acDesign」を指定)で開きます。

  6. そのフォームの既定のビューを表す「DefaultView」プロパティを調べ、それが「2:データシートビュー」であればそのフォーム名をイミディエイトウィンドウに出力します。

    なお、ここでDefaultViewプロパティと照合する各ビューの値は下記の通りです。
    • 単票フォーム → 0
    • 帳票フォーム → 1
    • データシート → 2
    • 分割フォーム → 5

  7. そのフォームを閉じます。
    ここではデータ収集のみでデザイン変更はありませんので、引数に「acSaveNo」を指定することで意図的に変更を保存せずに閉じます。

Sub Sample_3_05()
'既定のビューがデータシートであるフォームを収集する

  Dim dbs As Database
  Dim ctn As Container
  Dim doc As Document
  Dim strFormName As String

  Set dbs = CurrentDb
  Set ctn = dbs.Containers!Forms
  For Each doc In ctn.Documents
    strFormName = doc.Name
    DoCmd.OpenForm strFormName, acDesign
    If Forms(strFormName).DefaultView = 2 Then
      Debug.Print strFormName
    End If
    DoCmd.Close acForm, strFormName, acSaveNo
  Next doc

End Sub

実行例:


| Index | Prev | Next |



Copyright © T'sWare All rights reserved