インポートや、リンクの操作を自動化するプログラムを作成するような時に、
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メソッドを使用します。
|