HOME > 即効テクニック > AccessVBA > ファイル操作・他アプリケーションとの連携 > Excelブック内のシート名を取得する(DAO)

即効テクニック

ファイル操作・他アプリケーションとの連携

Excelブック内のシート名を取得する(DAO)

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