■第2回:ファイル選択ダイアログの操作
説明:
EXCELからテキストファイルを入力したり、他のEXCELを操作する場合
ファイル選択ダイアログを表示して対象となるファイルを選択する事
ができます。
また逆に作成したテキストファイルを保存する場合にはファイル保存
ダイアログを表示して保存するファイルを設定できます。
使用例:
Option Explicit
‘———————————————————–
‘ [開く]ボタン押下時
‘———————————————————–
Sub ボタン1_Click()
Dim Path As String
Dim Record As String
‘————————————–
‘ 入力ファイル選択
‘————————————–
InputFilePath = OpenDialog
‘————————————–
‘ テキストファイルの入力
‘————————————–
Open InputFilePath For Input As 1
While Not EOF(1)
Line Input #1, Record
:
Wend
Close 1
End Sub
‘———————————————————–
‘ [保存]ボタン押下時
‘———————————————————–
Sub ボタン2_Click()
Dim Path As String
Dim Record As String
‘————————————–
‘ 出力先ファイル設定
‘————————————–
Path = SaveDialog
if Path <> “” Then
‘———————————-
‘ テキストファイルの出力
‘———————————-
Open FilePath For Output As 1
Print #1, Record
Close 1
End If
End Sub
‘———————————————————–
‘ 入力用ファイル選択ダイアログ
‘———————————————————–
Private Function OpenDialog() As String
Dim InputFilePath As String
InputFilePath = Application.GetOpenFilename(“CSVファイル,*.csv”, , _
“入力ファイルを指定してください”)
If InputFilePath = “False” Then InputFilePath = “”
OpenDialog = InputFilePath
End Function
‘———————————————————–
‘ 出力用ファイル選択ダイアログ
‘———————————————————–
Private Function SaveDialog() As String
Dim OutputFilePath As String
OutputFilePath = Application.GetSaveAsFilename(OutputFilePath, _
, , “出力先ファイルを指定してください”)
If OutputFilePath = “False” Then OutputFilePath = “”
if OutputFilePath <> “” Then
If Dir(OutputFilePath) <> “” Then
‘ ファイルが存在するかを確認
If MsgBox(OutputFilePath & “は既に存在します。上書きしますか?”, vbYesNo) = vbNo Then
MsgBox “処理が中断されました。”
OutputFilePath = “”
End If
End If
End If
SaveDialog = OutputFilePath
End Function
———————————–
解説:Application.GetOpenFilename
———————————–
ユーザーからファイル名を取得するために、[ファイルを開く] ダイアログ
ボックスを表示します。
ダイアログ ボックスで指定したファイルは、実際には開かれません。
書式:
expression.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)
expression
・必ず指定します。Application オブジェクトを返す
オブジェクト式を指定します。
FileFilter
・省略可能です。バリアント型 (Variant) の値を使用します。
・ファイルの候補を指定する文字列(ファイル フィルタ文字列)を
指定します。
・ファイル フィルタ文字列とワイルドカードのペアを、必要な数
だけ指定します。
・ファイル フィルタ文字列とワイルドカードはカンマ (,) で区切り、
各ペアもカンマで区切って指定します。
各ペアは、[ファイルの種類] ボックスのリストに表示されます。
例えば、テキストとアドインの 2 つのファイル フィルタの指定は
次のようになります。
“テキストファイル (*.txt),*.txt,アドインファイル (*.xla),*.xla”
・1 つのファイル フィルタ文字列に複数のワイルドカードを
対応させるには、次のように各ワイルドカードをセミコロン(;)で
区切ります。
“Visual Basic ファイル (*.bas;*.txt),*.bas;*.txt”
・この引数を省略すると、”すべてのファイル (*.*),*.*” を指定した
ことになります。
FilterIndex
・省略可能です。バリアント型 (Variant) の値を使用します。
・引数 FileFilter で指定したファイル フィルタ文字列の中で、
1 から何番目の値を既定値とするかを指定します。
・この引数を省略するか、引数 FileFilter に含まれる
ファイル フィルタ文字列の数より大きい数値を指定すると、
最初のファイル フィルタ文字列が既定値となります。
Title
・省略可能です。バリアント型 (Variant) の値を使用します。
・ダイアログ ボックスのタイトルを指定します。
この引数を省略すると “ファイルを開く” になります。
ButtonText
・省略可能です。バリアント型 (Variant) の値を使用します。
Macintosh でのみ指定できます。
MultiSelect
・省略可能です。バリアント型 (Variant) の値を使用します。
True を指定すると、複数のファイルを選択できます。
False を指定すると、1 つのファイルしか選択できません。
・既定値は False です。
説明:
GetOpenFilename メソッドは、ユーザーによって選択、または
入力されたファイルの名前とパス名を返します。
引数 MultiSelect が True の場合は、選択されたファイルの名前の
配列が返されます。
選択されたファイルが 1 つでも、配列として返されます。
入力が取り消された場合には False が返されます。
このメソッドを実行することによって、カレント ドライブや
カレント フォルダが変更される可能性があります
———————————–
解説:Application.GetSaveAsFilename
———————————–
ユーザーからファイル名を取得するために、[名前を付けて保存] ダイアログ
ボックスを表示します。
ダイアログ ボックスで指定したファイルは、実際には保存されません。
書式:
expression.GetSaveAsFilename(InitialFilename, FileFilter, FilterIndex, Title, ButtonText)
expression
・必ず指定します。Application オブジェクトを返すオブジェクト式を
指定します。
InitialFilename
・省略可能です。バリアント型 (Variant) の値を使用します。
・既定値として表示するファイル名を指定します。
・この引数を省略すると、作業中のブックの名前が使われます。
FileFilter
・省略可能です。バリアント型 (Variant) の値を使用します。
・ファイルの候補を指定する文字列 (ファイル フィルタ文字列) を
指定します。
・ファイル フィルタ文字列とワイルドカードのペアを、必要な
数だけ指定します。
・ファイル フィルタ文字列とワイルドカードはカンマ (,) で区切り、
各ペアもカンマで区切って指定します。
・各ペアは、[ファイルの種類] ボックスのリストに表示されます。
・例えば、テキストとアドインの 2 つのファイル フィルタの指定は
次のようになります。
“テキストファイル (*.txt),*.txt,アドインファイル (*.xla),*.xla”
・1 つのファイル フィルタ文字列に複数のワイルドカードを
対応させるには、次のように各ワイルドカードをセミコロン(;)で
区切ります。
“Visual Basic ファイル (*.bas;*.txt),*.bas;*.txt”
・この引数を省略すると、”すべてのファイル (*.*),*.*” を指定した
ことになります。
FilterIndex
・省略可能です。バリアント型 (Variant) の値を使用します。
・引数 FileFilter で指定したファイル フィルタ文字列の中で、
1 から何番目の値を既定値とするかを指定します。
・この引数を省略するか、引数 FileFilter に含まれるファイル
フィルタ文字列の数より大きい数値を指定すると、最初のファイル
フィルタ文字列が既定値となります。
Title
・省略可能です。バリアント型 (Variant) の値を使用します。
・ダイアログ ボックスのタイトルを指定します。
・この引数を省略すると、”名前を付けて保存” になります。
ButtonText
・省略可能です。バリアント型 (Variant) の値を使用します。
Macintosh でのみ指定できます。
説明:
このメソッドは、ユーザーによって選択または入力されたファイルの名前と
パス名を返します。
入力が取り消された場合には False が返されます。
このメソッドを実行することによって、カレント ドライブやカレント
フォルダが変更される可能性があります。