AccessのVBAでファイルダイアログからファイルを指定する方法

当ページのリンクには広告が含まれています。
ファイル選択
  • URLをコピーしました!

Accessの処理において、「EXCELやCSVファイルを指定する」というニーズがあります。

テキストボックスに直接入力やコピペによるファイル指定でも実現できますが、少々ユーザビリティが悪いですね。

そこで、ファイルダイアログを開いてファイルを指定する方法が便利です。

目次

ファイルダイアログを開く画面イメージ

大体こんな感じのフォームをダイアログ形式で表示することが多いです。

Accessファイル指定画面

ファイル名のテキストボックスの横にフォルダアイコンがあるボタンを配置します。

ファイルダイアログを開くための事前準備

ダイアログを開くにはFileObjectLibralyを使用します。

VBAからこのライブラリを利用できるように、参照設定を追加する必要があります。

VisualBasic画面の上部メニューのツール → 参照設定 の順で選択します。

「Microsft Office xx.x Object Library」 (xxはバージョン)にチェックを入れます。

この参照設定がなければコンパイルエラーとなります。

参照エラー

ファイルダイアログを開く

以下のコードを標準モジュールに貼り付けます。

'---------------------------------------------------------------------
'ファイル選択ダイアログ
'---------------------------------------------------------------------

Public Function getFileName(tmpFilePath As String) As String

    Dim intret As Integer
  
    With Application.FileDialog(msoFileDialogOpen)
    
    'ダイアログのタイトルを設定
    .Title = "ファイル選択ダイアログ"
    
    'ファイルの種類(拡張子)を指定
    .Filters.Clear
    .Filters.Add "EXCELファイル", "*.xls, *.xlsx"
    .Filters.Add "テキストファイル", "*.csv, *.tsv"
    
    'ファイルの種類の初期値を設定
    .FilterIndex = 1
    
    '複数ファイル選択を許可しない
    .AllowMultiSelect = False
    
    '初期パスを設定
    .InitialFileName = tmpFilePath
    
    'ダイアログを表示
    intret = .Show
    If intret <> 0 Then
        'ファイルが選択されたときフルパスを返り値に設定
        getFileName = Trim(.SelectedItems.Item(1))
    Else
    'ファイルが選択されなければ長さゼロの文字列を返す
            getFileName = ""
        End If
    End With

End Function

後は、先のフォームのファイル選択ボタンのクリックイベントでこのモジュールを呼び出すだけです。

この関数の引数はデフォルトのフォルダ名(初期表示させたいフォルダ名)です。

(例)me.txtファイル名=getFileName(“c:\”)

上記の例ではCドライブ直下がデフォルトのパスとしてファイルダイアログが表示されます。

デフォルトのパスを指定しなかった場合(引数が空文字””の場合)、マイドキュメントがデフォルトのパスになります。

accessファイル選択

このプログラムでは、以下のファイルを表示する設定になっています。

ファイルの種類ファイル拡張子
EXCELファイル.xlsx, .xls
テキストファイル.csv, .tsv

表示させるファイルの種類を追加・削除する場合は、プログラムの16~17行目を編集してください。

ファイルを選択してOKをクリックすると、ファイル選択ダイアログが閉じられ選択したファイルがフォームのファイル名テキストボックスにセットされます

尚、キャンセルをクリックした場合はファイル名テキストボックスには何もセットされません

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次