HOME > 即効テクニック > AccessVBA > Windows環境・オブジェクト > コモンダイアログを使用する (GetOpenFileNameメソッド)

即効テクニック

Windows環境・オブジェクト

コモンダイアログを使用する (GetOpenFileNameメソッド)

(Access 97)
●概要●
AccessではDevelopers Edition以外にはCommon Dialog Controlの開発ライセンスが付属していませんし、ExcelのGetOpenFileNameのようなAPIのラッパーも用意されていません。
しかし、逆に言えばExcelがインストールしてある環境ならば、Excelのメソッドを直接利用するという選択肢もありえます。
そこで、今回はExcelのGetOpenFileNameメソッドをAccessから使用する方法を説明します。

●準備●
新規標準モジュールを作成し、以下のプロシージャを記述して下さい。

●サンプルコード●
Private Sub xlGetOpenFileName()
    Dim objXL       As New Excel.Application
    Dim FileName()  As Variant  'ファイル名
    Dim i           As Integer  'ループカウンタ

    'ファイルを開くダイアログを開き、ファイル名を取得
    FileName = _
      objXL.GetOpenFileName("すべてのファイル(*.*),*.*", , , , True)

    'ファイル名の配列を取得してイミディエイトウィンドウに表示
    For i = 1 To UBound(FileName)
        Debug.Print FileName(i)
    Next

    '終了処理
    objXL.Quit
    Set objXL = Nothing

End Sub

●動作確認●
サンプルxlGetOpenFileNameを実行しファイルを選択すると、イミディエイトウィンドウに選択したファイル名が表示されます。

●詳細●
サンプルでは全てのファイルを表示し、複数ファイルの選択を許す形でOfficeファイルダイアログを表示させています。
複数ファイルを選択した場合、戻り値は配列として返されます。ですから複数ファイルを選択する形の場合、戻り値をVariant型の変数で丸ごと受け取り、その後ループ処理等でファイル名を個別に取り出す必要があります。

また、このメソッドは単に「ファイル名を取得」するだけですから、そのファイル名をどう処理していくかは、他の部分のコーディングに依存しますので注意が必要です。

●引数説明●
ExcelのGetOpenFileNameメソッドの引数は以下の通りです。

object.GetOpenFileName(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)

FileFilter   省略可能なVariant型の値を使用します。
             開くファイルの種類を指定する文字列(ファイルフィルタ文字列)
             とワイルドカードのペアを、必要な数だけ指定します。
             ファイル フィルタ文字列とワイルドカードはカンマで区切り、
             各ペアもカンマで区切って指定します。各ペアは[ファイルの種
             類] ボックスのリストに表示されます。
             1 つのファイル フィルタ文字列に複数のワイルドカードを対応
             させるには、各ワイルドカードをセミコロンで区切ります。
             (例) "Accessファイル (*.mdb; *.mde),*.mdb;*.mde"
             省略すると "すべてのファイル (*.*),*.*" を指定したことにな
             ります。

FilterIndex  省略可能なVariant型の値を使用します。
             引数 FileFilter で指定したフィルタ文字列の中で、何番目を既
             定値とするかを指定します。
             この引数を省略するか、FileFilterに含まれるフィルタ文字列の
             数より大きい数値を指定すると、最初のフィルタ文字列が既定値
             となります。

Title        省略可能なVariant型の値を使用します。
             ダイアログのタイトルを指定します。
             この引数を省略すると "ファイルを開く" になります。

ButtonText   省略可能なVariant型の値を使用します。
             Macintosh のみ指定できます。

MultiSelect  省略可能なVariant型の値を使用します。
             Trueを指定すると、複数のファイルを選択できます。
             Falseを指定すると、1 つのファイルしか選択できません。
             既定値は False です。