bbGetOpenFileEX

説明:
ファイル参照ダイアログを使用する方法を紹介します。
あらかじめ 標準モジュール <宣言部> に、

#039 コモンダイアログを使用する方法

を記述してからご利用ください。

サンプルプロシージャ:
標準モジュールに記述します。

Public Function bbGetOpenFileEX( _
  Optional Title As String, _
  Optional InitDir As String, _
  Optional OpFilter 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(InitDir) Then .lpstrInitialDir = InitDir

    'ダイアログボックスのタイトル名
    If Not IsMissing(Title) Then .lpstrTitle = Title

    'Flagsの値
    .flags = OFN_FILEMUSTEXIST Or OFN_HIDEREADONLY Or OFN_PATHMUSTEXIST

  End With

  longret = GetOpenFileName(strGetFile)

  If longret Then

    bbGetOpenFileEX = 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 = bbGetOpenFileEX("ファイルを選択", "", _
       "テキストファイル(*.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 コモンダイアログを使用する方法
#041 名前を付けて保存ダイアログを使用する方法