'======================================================= '「ファイルを開く」ダイアログ表示 '------------------------------------------------------- 't_mizu@mail.goo.ne.jpさんからの投稿 1999/03/01 '======================================================= Option Compare Database Option Explicit Const OFN_READONLY = &H1 Const OFN_OVERWRITEPROMPT = &H2 Const OFN_HIDEREADONLY = &H4 Const OFN_NOCHANGEDIR = &H8 Const OFN_SHOWHELP = &H10 Const OFN_ENABLEHOOK = &H20 Const OFN_ENABLETEMPLATE = &H40 Const OFN_ENABLETEMPLATEHANDLE = &H80 Const OFN_NOVALIDATE = &H100 Const OFN_ALLOWMULTISELECT = &H200 Const OFN_EXTENSIONDIFFERENT = &H400 Const OFN_PATHMUSTEXIST = &H800 Const OFN_FILEMUSTEXIST = &H1000 Const OFN_CREATEPROMPT = &H2000 Const OFN_SHAREAWARE = &H4000 Const OFN_NOREADONLYRETURN = &H8000 Const OFN_NOTESTFILECREATE = &H10000 Const OFN_NONETWORKBUTTON = &H20000 Const OFN_NOLONGNAMES = &H40000 ' force no long names for 4.x modules Const OFN_EXPLORER = &H80000 ' new look commdlg Const OFN_NODEREFERENCELINKS = &H100000 Const OFN_LONGNAMES = &H200000 ' force long names for 3.x modules Declare Function GetOpenFileName Lib "COMDLG32.DLL" Alias "GetOpenFileNameA" (pOpenfilename As OpenFileName) As Long '「ファイルを開く」ダイアログ表示用構造体 Type OpenFileName lStructSize As Long hwndOwner As Long hInstance As Long lpstrFilter As String lpstrCustomFilter As String nMaxCustFilter As Long nFilterIndex As Long lpstrFile As String nMaxFile As Long lpstrFileTitle As String nMaxFileTitle As Long lpstrInitialDir As String lpstrTitle As String Flags As Long nFileOffset As Integer nFileExtension As Integer lpstrDefExt As String lCustData As Long lpfnHook As Long lpTemplateName As String End Type '「ファイルを開く」ダイアログを開いてファイル選択 ' 引数 ' hWnd : 表示元ウィンドウハンドル(指定なしの場合、0 を渡す) ' Title : ダイアログボックスのウィンドウタイトル ' InitDir : 初期ディレクトリ ' リターン値 ' = "" : ファイル選択キャンセル ' <> "" :選択されたファイル名(フルパス) Public Function Select_OpenFileName(ByVal hWnd As Long, Optional Title As Variant, Optional InitDir As Variant) As String Dim OF As OpenFileName Dim tmp As String Dim stu As Long Dim filter As String tmp = String$(5120, Chr$(0)) filter = "全て(*.*)" + Chr$(0) + "*.*" + Chr$(0) + Chr$(0) With OF .lStructSize = Len(OF) '構造体長 .hwndOwner = hWnd 'Ownerハンドル .lpstrFile = tmp '戻り値バッファ .nMaxFile = 5120 '戻り値バッファ長 .lpstrFilter = filter .nFilterIndex = 1 .Flags = OFN_FILEMUSTEXIST Or OFN_HIDEREADONLY Or OFN_PATHMUSTEXIST If Not IsMissing(Title) Then .lpstrTitle = Title 'ダイアログタイトル If Not IsMissing(InitDir) Then .lpstrInitialDir = InitDir '初期ディレクトリ End With stu = GetOpenFileName(OF) If stu Then Select_OpenFileName = Left$(OF.lpstrFile, InStr(OF.lpstrFile, Chr$(0)) - 1) End If End Function