Excel VBAでファイルを選択するダイアログを表示する

フォルダ選択ダイアログと同様に、Excel VBAでよく使うTipsです。



Homeに戻る > Excel ファイル操作のTipsへ

ファイル選択ダイアログを開くには、ApplicationオブジェクトのGetOpenFilenameメソッドを使います。

ここでは、ファイルを1個選択し返す方法と、複数ファイルが選択された場合の取得方法を掲載しています。

複数選択された場合は、配列で戻りますのでまず戻り値をIsArrayで配列かどうかチェックしています。

配列であれば、ループしUBoundで1個づつ取り出しています。選択された順番の通り取得することはできません。

このプロシージャも他のWindowsソフトで一般的に使用するルーチンですので、特に考えることもなく使い回せばいいかと思います。

構文:GetOpenFilename FileFilter, FilterIndex, Title, ButtonText, MultiSelect

関連するTipsの「印刷ダイアログボックスを表示する:Excel VBA」も参照してください。

■1個のファイルのみ選択する場合

コマンドボタン クリックイベント

Private Sub CommandButton1_Click()
    CommandButton1.Caption = SelectFile_single
End Sub

ファイルダイアログExcel標準モジュールコード

・GetOpenFilenameの戻り値がFalseの場合、何も選択されていません。

Public Function SelectFile_single()
    Dim sfile As String
    Dim i As Integer
    Dim s As String

    sfile = Application.GetOpenFilename("ファイルを選択してください (*.xls), *.xls")
    If sfile = "False" Then
        SelectFile_single = ""
    Else
        SelectFile_single = sfile
    End If
End Function

ファイルダイアログ

Excel実行結果

ファイル名が表示されている


■複数のファイルを選択する場合

コマンドボタン クリックイベント

Private Sub CommandButton1_Click()
    CommandButton1.Caption = SelectFile_multi
End Sub

ファイルダイアログExcel標準モジュールコード

・IsArrayで配列かどうかチェックします。

・配列の場合、改行で連結した文字列にし返します。

Public Function SelectFile_multi()
    Dim sfile As Variant
    Dim i As Integer
    Dim s As String

    sfile = Application.GetOpenFilename("ファイルを選択してください (*.xls), *.xls", , , , True)
    s = ""
    If IsArray(sfile) Then
        For i = 1 To UBound(sfile)
            If s <> "" Then s = s & vbCrLf
            s = s & sfile(i)
        Next i
    End If
    SelectFile_multi = s
End Function

ファイルダイアログ

Excel実行結果

ファイル名が表示されている



Homeに戻る > Excel ファイル操作のTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved