2013.
09.
26
10:17:46
結論から言えば「GetSaveAsFilename()」を使えばOKです。
一番単純なのは例えばこんな感じφ(--)
これだけだと味気ないので、ダイアログのタイトルを指定してみましょうかφ(--)
ついでなんで初期のファイル名も指定してみましょうφ(--)
おまけに保存するときに選べる「ファイルの種類」も絞ってみましょうφ(--)
ここは解説が必要ですかね。
「ファイルの種類」を指定する「FileFilter」は
の順にカンマ区切りでズラズラと書けます。
サンプルでは見やすくするために適時改行していますが、
1行で
のように書くことも可能です。
「表示する文字列」はダイアログの「ファイルの種類」に表示される文言です。
Excelを保存しようとしたときの「Excel 97-2003 ブック(.xls)」とかなっている部分ですね。
この文言を好きに指定できます。
「ファイルのパターン」は保存時の拡張子だと思っても構いません。
「*.xls」であればExcel、「*.csv」であればCSVで保存されます。
では何故「保存時の拡張子」ではなくわざわざ「ファイルのパターン」と書いたのか?
「名前を付けて保存」のダイアログでは選択中のフォルダの中身が表示されますが、
ここで表示されるファイルは「ファイルの種類」で選択されているファイルのみです。
「ファイルの種類」で選択されているのが「*.xls」であればExcelファイル、
「*.csv」であればCSVファイルのみが表示されます。
そしてパターンで指定するのは普通は「*.xls」とか「*.csv」とかです。
でもですね(--)b
「aaa.*」とかもその気になれば指定できるのです。
とか書けちゃいます。
そうすると「名前を付けて保存」のダイアログでは「aaa.txt」「aaa.csv」のように
ファイル名が「aaa」のファイルのみが表示されるようになります。
まぁ使いどころは無いと思いますけどね。
読んで字の如く、あくまで「フィルター」なので拡張子以外でも絞り込めるのですよ。
普通は拡張子で絞り込むので、それ以外で絞ると違和感がありますけどね。
そんな感じ(--)ノ
あっ、そうそう。
任意の「ファイルの種類」を選択状態にすることも可能です。
例えばこんなコードを書くとφ(--)
「CSV形式だよ(*.csv)」が初期状態で選択された状態になりますよ。
今度こそ、そんな感じ(--)ノ
一番単純なのは例えばこんな感じφ(--)
Sub ボタン1_Click()
Dim fileName As Variant
'保存先指定のダイアログを開く
fileName = _
Application.GetSaveAsFilename()
If fileName <> False Then
MsgBox fileName
End If
End Sub
Dim fileName As Variant
'保存先指定のダイアログを開く
fileName = _
Application.GetSaveAsFilename()
If fileName <> False Then
MsgBox fileName
End If
End Sub
これだけだと味気ないので、ダイアログのタイトルを指定してみましょうかφ(--)
Sub ボタン1_Click()
Dim fileName As Variant
'保存先指定のダイアログを開く
fileName = _
Application.GetSaveAsFilename( _
Title:="保存先を選べ!" _
)
If fileName <> False Then
MsgBox fileName
End If
End Sub
Dim fileName As Variant
'保存先指定のダイアログを開く
fileName = _
Application.GetSaveAsFilename( _
Title:="保存先を選べ!" _
)
If fileName <> False Then
MsgBox fileName
End If
End Sub
ついでなんで初期のファイル名も指定してみましょうφ(--)
Sub ボタン1_Click()
Dim fileName As Variant
'保存先指定のダイアログを開く
fileName = _
Application.GetSaveAsFilename( _
Title:="保存先を選べ!" _
, InitialFileName:="hoge" _
)
If fileName <> False Then
MsgBox fileName
End If
End Sub
Dim fileName As Variant
'保存先指定のダイアログを開く
fileName = _
Application.GetSaveAsFilename( _
Title:="保存先を選べ!" _
, InitialFileName:="hoge" _
)
If fileName <> False Then
MsgBox fileName
End If
End Sub
おまけに保存するときに選べる「ファイルの種類」も絞ってみましょうφ(--)
Sub ボタン1_Click()
Dim fileName As Variant
'保存先指定のダイアログを開く
fileName = _
Application.GetSaveAsFilename( _
Title:="保存先を選べ!" _
, InitialFileName:="hoge" _
, 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.GetSaveAsFilename( _
Title:="保存先を選べ!" _
, InitialFileName:="hoge" _
, 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だよ,*.*" _
のように書くことも可能です。
「表示する文字列」はダイアログの「ファイルの種類」に表示される文言です。
Excelを保存しようとしたときの「Excel 97-2003 ブック(.xls)」とかなっている部分ですね。
この文言を好きに指定できます。
「ファイルのパターン」は保存時の拡張子だと思っても構いません。
「*.xls」であればExcel、「*.csv」であればCSVで保存されます。
では何故「保存時の拡張子」ではなくわざわざ「ファイルのパターン」と書いたのか?
「名前を付けて保存」のダイアログでは選択中のフォルダの中身が表示されますが、
ここで表示されるファイルは「ファイルの種類」で選択されているファイルのみです。
「ファイルの種類」で選択されているのが「*.xls」であればExcelファイル、
「*.csv」であればCSVファイルのみが表示されます。
そしてパターンで指定するのは普通は「*.xls」とか「*.csv」とかです。
でもですね(--)b
「aaa.*」とかもその気になれば指定できるのです。
, FileFilter:="ほげほげ,aaa.*" _
とか書けちゃいます。
そうすると「名前を付けて保存」のダイアログでは「aaa.txt」「aaa.csv」のように
ファイル名が「aaa」のファイルのみが表示されるようになります。
まぁ使いどころは無いと思いますけどね。
読んで字の如く、あくまで「フィルター」なので拡張子以外でも絞り込めるのですよ。
普通は拡張子で絞り込むので、それ以外で絞ると違和感がありますけどね。
そんな感じ(--)ノ
あっ、そうそう。
任意の「ファイルの種類」を選択状態にすることも可能です。
例えばこんなコードを書くとφ(--)
Sub ボタン1_Click()
Dim fileName As Variant
'保存先指定のダイアログを開く
fileName = _
Application.GetSaveAsFilename( _
Title:="保存先を選べ!" _
, InitialFileName:="hoge" _
, 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.GetSaveAsFilename( _
Title:="保存先を選べ!" _
, InitialFileName:="hoge" _
, FileFilter:="Excelの97-2003形式だよ,*.xls" & _
",CSV形式だよ,*.csv" & _
",テキストファイルだよ,*.txt" & _
",なんでもOKだよ,*.*" _
, FilterIndex:=2 _
)
If fileName <> False Then
MsgBox fileName
End If
End Sub
「CSV形式だよ(*.csv)」が初期状態で選択された状態になりますよ。
今度こそ、そんな感じ(--)ノ