説明:
名前を付けて保存ダイアログを使用する方法を紹介します。
あらかじめ 標準モジュール <宣言部> に、
#039 コモンダイアログを使用する方法
を記述してからご利用ください。
サンプルプロシージャ:
標準モジュールに記述します。
Public Function bbGetSaveFileEX( _
Optional Title As String, _
Optional InitDir As String, _
Optional InitFileName As String, _
Optional OpFilter As String, _
Optional DefaultExt As String) As String
On Error GoTo Err_Handler
Dim strGetFile As OpenFileName
Dim strBuf As String
Dim strFilterBuf As String
Dim longret As Long
strBuf = String$(5120, vbNullChar)
strFilterBuf = "全てのファイル(*.*)" & vbNullChar & "*.*" & vbNullChar & vbNullChar
If Not IsMissing(OpFilter) Then
strFilterBuf = OpFilter & strFilterBuf
End If
With strGetFile
'この構造体の長さ
.lStructSize = Len(strGetFile)
'Ownerハンドル
.hWndOwner = Application.hWndAccessApp
'フィルタ文字列
.lpstrFilter = strFilterBuf
'選択されたファイル名のフルパス(戻り値)
.lpstrFile = strBuf
'lpstrCustomFilterのバッファサイズ(戻り値)
.nMaxFile = 5120
'初期フィルターインデックス番号
.nFilterIndex = 1
'タイトルバーに表示するタイトル名
If Not IsMissing(Title) Then .lpstrTitle = Title
'初期フォルダ名
If Not IsMissing(InitDir) Then .lpstrInitialDir = InitDir
'初期ファイル名
If Not IsMissing(InitFileName) Then .lpstrFileTitle = InitFileName
'拡張子を付けなかった時のデフォルト拡張子
If Not IsMissing(DefaultExt) Then .lpstrDefExt = DefaultExt
'Flagsの値
.flags = OFN_FILEMUSTEXIST Or OFN_HIDEREADONLY Or OFN_PATHMUSTEXIST
End With
longret = GetSaveFileName(strGetFile)
If longret Then
bbGetSaveFileEX = Left$(strGetFile.lpstrFile, InStr(strGetFile.lpstrFile, vbNullChar) - 1)
End If
Exit_Handler: Exit Function
Err_Handler:
'エラーの場合メッセージを表示します。
If Err.Number <> 0 Then MsgBox Err.Number & " " & Err.Description
Resume Exit_Handler
End Function
使用例:
フォームのボタンクリック時等に記述します。
Sub Sample_Click()
Dim strFile As String
'名前を付けて保存ダイアログを表示します。
strFile = bbGetSaveFileEX("ファイルを選択", "", _
"テキストファイル(*.txt *.csv)" & vbNullChar & "*.txt;*.csv" & vbNullChar & _
"画像ファイル(*.jpg *.gif *.bmp)" & vbNullChar & "*.jpg;*.gif; *.bmp" & vbNullChar)
If Len(strFile) > 0 Then
'ファイルが選択されたとき
MsgBox strFile
Else
'キャンセルされたとき
MsgBox "キャンセルしました。 ", vbExclamation
End If
End Sub
関連ページ:
#039 コモンダイアログを使用する方法
#040 ファイル参照ダイアログを使用する方法