#05 オブジェクト一覧を応用してオブジェクトを一括オープン

すでに、テーブル/クエリー/フォーム/レポート/マクロ/モジュールといったデータベース上のオブジェクトの一覧を取得する方法については説明してきましたが、ここではその一覧を使ってオブジェクトを一括オープンする方法を説明します。
 
T'sKitの「オブジェクト一括オープン」ツールでは、オブジェクトの種類ごとにオブジェクトの一覧を表示し、そこから指定されたものだけをオープンするようになっていますが、ここではまず個々のオブジェクトは指定せずに、テーブルならテーブルのすべてのオブジェクトを一括オープンしてみましょう。それには次のコードを実行します。 

  Dim dbs As Database
  Dim tdf As TableDef  

  Set dbs = CurrentDb

  For Each tdf In dbs.TableDefs
    With tdf
      If ((.Attributes And dbSystemObject) Or _
        (.Attributes And dbHiddenObject)) = 0 Then
        DoCmd.OpenTable .Name, acViewDesign
      End If
    End With
  Next tdf
 


このコードの "DoCmd.OpenTable...." 以外の行はすべて『#01 MDBオブジェクト一覧を取得する』で説明したものと同じです。

テーブル以外のオブジェクトについても同様に『#01 MDBオブジェクト一覧を取得する』で説明したコードに "DoCmd.OpenQuery...."、"DoCmd.OpenForm...." などを追加すれば一括オープンすることができます。
いて、リストボックスなどで指定された複数のオブジェクトを一括してオープンしたい場合や、異なるオブジェクトの種類の複数のオブジェクト、例えばあるテーブルとあるフォームをオープンしたい場合について説明します。
ず、リストボックスなどで指定されたオブジェクトをオープンする場合には、「すべてのテーブルオブジェクトを列挙するループ」の代わりに「リストボックスで選択されている項目のループ」を作り、その中から "DoCmd.OpenTable...." などを使って開きます。

以下のコードでは、リストボックスの名前を"リスト0"、[複数選択]プロパティを"標準"とし、各項目にはテーブル名が設定されているものとします。


  Dim iintLoop As Integer
 
  With Me!リスト0
    'リストボックスで選択されている項目を
    'チェックするループ

    For iintLoop = 0 To .ListCount - 1
      If .Selected(iintLoop) Then
        '項目が選択されていたら開く
        DoCmd.OpenTable .ItemData(iintLoop), acViewDesign
      End If
    Next iintLoop
  End With
方、異なるオブジェクトの場合には、あらかじめそのオブジェクト名がどの種類のオブジェクトであるかを判別できるようにしておく必要があるでしょう。例えばリストボックスを使うのであれば2列目にオブジェクトの種類をセットしておきます。 


  Dim iintLoop As Integer
 
  With Me!リスト0
    'リストボックスで選択されている項目を
    'チェックするループ
    For iintLoop = 0 To .ListCount - 1
      If .Selected(iintLoop) Then
        '項目が選択されていたら開く
        '2列目のオブジェクトの種類で分岐
        Select Case .Column(1, iintLoop)
          Case "テーブル"
            DoCmd.OpenTable .ItemData(iintLoop), acViewDesign
          Case "クエリー"
            DoCmd.OpenQuery .ItemData(iintLoop), acViewDesign
          Case "フォーム"
            DoCmd.OpenForm .ItemData(iintLoop), acDesign
        End Select
      End If
    Next iintLoop
  End With
| Index | Prev | Next |

 

Copyright © T'sWare All rights reserved