2014.
10.
22
12:22:48
結論から書くと「GetOpenFilename()」を使えばOKです。
一番単純なのは、例えばこんな感じφ(--)
これだけだと味気ないので、ダイアログのタイトルを指定してみましょうかφ(--)
ついでなんで、選択できる「ファイルの種類」も絞ってみましょうφ(--)
ここは解説が必要ですかね。
「ファイルの種類」を指定する「FileFilter」は
の順にカンマ区切りでズラズラと書けます。
サンプルでは見やすくするために適時改行していますが、
1行で
のように書くことも可能です。
「表示する文字列」はダイアログの「ファイルの種類」に表示される文言です。
例えば「すべてのファイル(*.*)」と表示されているところの「すべてのファイル」の部分ですね。
この文言を好きに指定できます。
「ファイルのパターン」は選択できるファイルの拡張子だと思っても構いません。
「*.xls」であればExcel、「*.csv」であればCSVファイルが選択対象になります。
では何故「ファイルの拡張子」ではなくわざわざ「ファイルのパターン」と書いたのか?
それは拡張子以外、その気になれば「aaa.*」とかも指定できるからです。
とか書けちゃいます。
そうすると「aaa.txt」「aaa.csv」のようにファイル名が「aaa」のファイルのみが表示されます。
使いどころは少ないと思いますけどね。
あくまで「フィルター」なのです。
拡張子以外でも絞り込めます。
そんな感じ(--)ノ
あっ、そうそう。
初期状態で、任意の「ファイルの種類」を選択状態にすることも可能です。
例えばこんなコードを書くとφ(--)
「CSV形式だよ(*.csv)」が初期状態で選択された状態になりますよ。
ファイルの種類の説明は、そんな感じです。
あとは、そうですね。
ファイルを複数選択できるようにすることも可能ですφ(--)
注意点として、複数選択時の戻りは配列です。
文字列として参照しないようにご注意ください。
そんなところですかね。
ってなところで、ExcelVBAでファイルの選択ダイアログを表示するの、完了\(--)/
一番単純なのは、例えばこんな感じφ(--)
Sub ボタン1_Click()
Dim fileName As Variant
'ファイル選択のダイアログを開く
fileName = _
Application.GetOpenFilename()
If fileName <> False Then
MsgBox fileName
End If
End Sub
Dim fileName As Variant
'ファイル選択のダイアログを開く
fileName = _
Application.GetOpenFilename()
If fileName <> False Then
MsgBox fileName
End If
End Sub
これだけだと味気ないので、ダイアログのタイトルを指定してみましょうかφ(--)
Sub ボタン1_Click()
Dim fileName As Variant
'ファイル選択のダイアログを開く
fileName = _
Application.GetOpenFilename( _
Title:="ファイルを選べ!" _
)
If fileName <> False Then
MsgBox fileName
End If
End Sub
Dim fileName As Variant
'ファイル選択のダイアログを開く
fileName = _
Application.GetOpenFilename( _
Title:="ファイルを選べ!" _
)
If fileName <> False Then
MsgBox fileName
End If
End Sub
ついでなんで、選択できる「ファイルの種類」も絞ってみましょうφ(--)
Sub ボタン1_Click()
Dim fileName As Variant
'ファイル選択のダイアログを開く
fileName = _
Application.GetOpenFilename( _
Title:="ファイルを選べ!" _
, FileFilter:="Excelの97-2003形式だよ,*.xls" & _
",CSV形式だよ,*.csv" & _
",テキストファイルだよ,*.txt" & _
",なんでもOKだよ,*.*" _
)
If fileName <> False Then
MsgBox fileName
End If
End Sub
Dim fileName As Variant
'ファイル選択のダイアログを開く
fileName = _
Application.GetOpenFilename( _
Title:="ファイルを選べ!" _
, FileFilter:="Excelの97-2003形式だよ,*.xls" & _
",CSV形式だよ,*.csv" & _
",テキストファイルだよ,*.txt" & _
",なんでもOKだよ,*.*" _
)
If fileName <> False Then
MsgBox fileName
End If
End Sub
ここは解説が必要ですかね。
「ファイルの種類」を指定する「FileFilter」は
表示する文字列,ファイルのパターン(,表示する文字列,ファイルのパターン,……)
の順にカンマ区切りでズラズラと書けます。
サンプルでは見やすくするために適時改行していますが、
1行で
, FileFilter:="Excelの97-2003形式だよ,*.xls,CSV形式だよ,*.csv,テキストファイルだよ,*.txt,なんでもOKだよ,*.*" _
のように書くことも可能です。
「表示する文字列」はダイアログの「ファイルの種類」に表示される文言です。
例えば「すべてのファイル(*.*)」と表示されているところの「すべてのファイル」の部分ですね。
この文言を好きに指定できます。
「ファイルのパターン」は選択できるファイルの拡張子だと思っても構いません。
「*.xls」であればExcel、「*.csv」であればCSVファイルが選択対象になります。
では何故「ファイルの拡張子」ではなくわざわざ「ファイルのパターン」と書いたのか?
それは拡張子以外、その気になれば「aaa.*」とかも指定できるからです。
, FileFilter:="ほげほげ,aaa.*" _
とか書けちゃいます。
そうすると「aaa.txt」「aaa.csv」のようにファイル名が「aaa」のファイルのみが表示されます。
使いどころは少ないと思いますけどね。
あくまで「フィルター」なのです。
拡張子以外でも絞り込めます。
そんな感じ(--)ノ
あっ、そうそう。
初期状態で、任意の「ファイルの種類」を選択状態にすることも可能です。
例えばこんなコードを書くとφ(--)
Sub ボタン1_Click()
Dim fileName As Variant
'ファイル選択のダイアログを開く
fileName = _
Application.GetOpenFilename( _
Title:="ファイルを選べ!" _
, FileFilter:="Excelの97-2003形式だよ,*.xls" & _
",CSV形式だよ,*.csv" & _
",テキストファイルだよ,*.txt" & _
",なんでもOKだよ,*.*" _
, FilterIndex:=2 _
)
If fileName <> False Then
MsgBox fileName
End If
End Sub
Dim fileName As Variant
'ファイル選択のダイアログを開く
fileName = _
Application.GetOpenFilename( _
Title:="ファイルを選べ!" _
, FileFilter:="Excelの97-2003形式だよ,*.xls" & _
",CSV形式だよ,*.csv" & _
",テキストファイルだよ,*.txt" & _
",なんでもOKだよ,*.*" _
, FilterIndex:=2 _
)
If fileName <> False Then
MsgBox fileName
End If
End Sub
「CSV形式だよ(*.csv)」が初期状態で選択された状態になりますよ。
ファイルの種類の説明は、そんな感じです。
あとは、そうですね。
ファイルを複数選択できるようにすることも可能ですφ(--)
Sub ボタン1_Click()
Dim fileName As Variant
'ファイル選択のダイアログを開く
fileName = _
Application.GetOpenFilename( _
Title:="ファイルを選べ!" _
, FileFilter:="Excelの97-2003形式だよ,*.xls" & _
",CSV形式だよ,*.csv" & _
",テキストファイルだよ,*.txt" & _
",なんでもOKだよ,*.*" _
, FilterIndex:=2 _
, MultiSelect:=True _
)
' If fileName <> False Then
' MsgBox fileName
' End If
If IsArray(fileName) = True Then
For i = 1 To UBound(fileName)
MsgBox fileName(i)
Next i
End If
End Sub
Dim fileName As Variant
'ファイル選択のダイアログを開く
fileName = _
Application.GetOpenFilename( _
Title:="ファイルを選べ!" _
, FileFilter:="Excelの97-2003形式だよ,*.xls" & _
",CSV形式だよ,*.csv" & _
",テキストファイルだよ,*.txt" & _
",なんでもOKだよ,*.*" _
, FilterIndex:=2 _
, MultiSelect:=True _
)
' If fileName <> False Then
' MsgBox fileName
' End If
If IsArray(fileName) = True Then
For i = 1 To UBound(fileName)
MsgBox fileName(i)
Next i
End If
End Sub
注意点として、複数選択時の戻りは配列です。
文字列として参照しないようにご注意ください。
そんなところですかね。
ってなところで、ExcelVBAでファイルの選択ダイアログを表示するの、完了\(--)/