即効テクニック |
インポートや、リンクの操作を自動化するプログラムを作成するような時に、Excelブック内に含まれる全てのシートあるいは特定のシート名の取得をする必要があります。 そのようなときには、OpenDatabaseメソッドを使って、特定のExcelブックのDatabaseオブジェクトを参照してシート名を取得します。 サンプルマクロでは、「C:\TEST.xls」のシート名を取得して、イミディエイトウィンドウに出力しています。「TEST.xls」には、「Sheet1」「Sheet2」「Sheet3」の3シートがあります。 Sub Sample() Dim db As Database Dim tbl As TableDefs Dim intnumrecords As Integer Dim I, sheet_NM Set db = OpenDatabase("C:\TEST.xls", False, False, _ "excel 5.0;hdr=no;") For I = 0 To db.TableDefs.Count - 1 sheet_NM = db.TableDefs(I).Name Debug.Print "$マーク削除前:" & sheet_NM '取得したシート名に付加された $ マークを取り除きます。 sheet_NM = Mid(sheet_NM, 1, InStr(1, sheet_NM, "$", 1) - 1) Debug.Print "$マーク削除後:" & sheet_NM Next I db.Close End Sub イミディエイトウィンドウには、次のように出力されます。 $マーク削除前:Sheet1$ $マーク削除後:Sheet1 $マーク削除前:Sheet2$ $マーク削除後:Sheet2 $マーク削除前:Sheet3$ $マーク削除後:Sheet3 OpenDatabaseメソッドは、Workspaceオブジェクトで指定したデータベースを開き、そのデータベースを表すDatabaseオブジェクトへの参照を返します。 構文は、次のとおりです。 <構文> Set database = workspace.OpenDatabase (dbname, options, read-only, connect) database 開くDatabaseオブジェクトを表すオブジェクト変数を指定します。 workspace (省略可能) データベースを含める既存のWorkspaceオブジェクトを表すオブジェクト変数を指定します。 引数workspaceが値を 持たない場合、OpenDatabaseメソッドは既定のワークスペースを使用します。 dbname 既存のJetデータベースのファイル名、またはODBCデータソースのデータソース名(DSN)を表す文字列型(String)を指定します。 options (省略可能) データベースにさまざまな引数を設定するバリアント型(Variant)を指定します。 Jetワークスペースでは、引数optionsに使用できる値は次のとおりです。 設定値 説明 True 排他モードでデータベースを開きます。 False (既定値)共有モードでデータベースを開きます。 read-only (省略可能) サブタイプがブール型(Boolean)であるバリアント型(Variant)を指定します。データベースを読み取り専用権限で開く場合は、Trueが設定され、読み取り/書き込み権限で開く場合は、Falseが設定されます。 connect (省略可能) パスワードを含むさまざまな接続情報を示すサブタイプが文字列型(String)であるバリアント型(Variant)を指定します。 引数connectは、データベースの種類と、セミコロンに続く任意指定の引数との 2 つの部分で表現されています。まず最初に"ODBC;"または" Excel 5.0;"などのデータベースの種類を提示し、続けて任意指定の引数を指定します。任意指定の引数には特定の順序はなく、それぞれセミコロンで区切られます。パラメータにパスワードが含まれることもあります。その場合には、たとえば次のようになります。 " Excel 5.0; pwd=mypassword" データベースを閉じ、DatabasesコレクションからDatabaseオブジェクトを削除するには、そのオブジェクトに対してCloseメソッドを使用します。