フォルダパスの取得FileDiarogオブジェクトを使用したフォルダのパス取得 2012.11.10 [更新日]2024.11.24
フォルダのパスを取得する際に使用するFileDialogオブジェクト。それを用いたコードとメモです。
ポイント
・FileDiarogオブジェクトでのフォルダパス取得
・フォルダの存在確認
FileDialogプロパティの引数に msoFileDialogFolderPicker を設定しShowメソッドを実行すると、フォルダパス取得のFileDialogオブジェクトが返り、フォルダ選択用のダイアログボックスが表示される。
ダイアログボックスでフォルダを選択すると、SelectedItemsプロパティでパスを取得できる。
[参考]Microsoft Learn Challenge Application.FileDialog プロパティ (Excel)
Microsoft Learn Challenge FileDialog オブジェクト (Office)
何らかの理由で、フォルダの存在を確認するケースも考えられるので、Dir関数を用いたフォルダの存在確認方法もあわせて記載している。
[参考]Microsoft Learn Challenge Dir 関数
Excelマクロ管理ツール
サンプルコード
フォルダ選択ダイアログボックスでフォルダを選択し、フォルダ名とフォルダパスを表示する。
'----------------------------------------------------------------- ' フォルダ選択ダイアログボックスでフォルダパスを取得・表示 '----------------------------------------------------------------- ' '[作成日]2012.11.10 [更新日]2024.11.24 ' https://excel.syogyoumujou.com/memorandum/filedialog.html '----------------------------------------------------------------- Sub フォルダ選択ダイアログボックス使用例() '--------------------------------------- ' フォルダ選択 '--------------------------------------- Dim strFolderPath As String '《フォルダパス取得》 ' ・ 引数1 : FolderPath : 起点となるフォルダパス(省略可能) ' ・ 引数2 : DialogTitle : ダイアログボックスタイトル(省略可能) ' ・ 引数3 : ButtonCaption : ボタン表示テキスト(省略可能) strFolderPath = getFolderPath() ' フォルダが選択されなかった場合は終了 If strFolderPath = "" Then Exit Sub '--------------------------------------- ' フォルダ名取得(フォルダ存在確認) '--------------------------------------- Dim strFolderName As String strFolderName = Dir(strFolderPath, vbDirectory) If strFolderName = "" Then ' フォルダパスからフォルダ名を取得出来ない場合はフォルダが存在しない MsgBox "フォルダが見つかりません", vbExclamation Exit Sub End If '--------------------------------------- ' フォルダパス表示 '--------------------------------------- MsgBox "フォルダ名:" & strFolderName & vbLf & _ "フォルダパス:" & strFolderPath, , "選択フォルダ" End Sub
'----------------------------------------------------------------- ' フォルダパス取得 '----------------------------------------------------------------- '[引数] ' FolderPath :起点となるフォルダパス(既定:"") ' ""(空白の文字列)の場合はカレントフォルダが起点 ' DialogTitle :ダイアログボックスのタイトル(既定:"フォルダ選択") ' ButtonCaption:ボタンに表示するテキスト(既定:"選択") '[戻り値] ' 成功 :選択したフォルダパス ' ([キャンセル]ボタンをクリックした場合は空の文字列) '[作成日]2012.11.10 [更新日]2024.11.24 '----------------------------------------------------------------- Function getFolderPath(Optional ByVal FolderPath As String = "", _ Optional ByVal DialogTitle As String = "フォルダ選択", _ Optional ByVal ButtonCaption As String = "選択") As Variant With Application.FileDialog(msoFileDialogFolderPicker) .InitialFileName = FolderPath .Title = DialogTitle .ButtonName = ButtonCaption If .Show Then getFolderPath = .SelectedItems(1) End With End Function
VBAコードをカラーで印刷・Web掲載するためのツールはこちら
メモ
Dir関数
[参考]Microsoft Learn Challenge Dir 関数
指定したパターンやファイル属性に一致する、ファイルやフォルダの名前の文字列を返す。
返される文字列は(String型)。
ドライブのボリュームラベルも取得可能。
構文:Dir[(pathname[, attributes])]
[pathname]
ファイル名を表す文字列式を指定。フォルダ名やドライブ名も含めて指定可能。
指定した内容が見つからないときは、長さ「0」の文字列を返す。
[attributes]
省略可能です。取得したいファイルの属性の値の合計、または定数を指定。
省略すると、標準ファイルの属性。Windowsでの「設定値」は以下の6つ
定数 | 値 | 内容 |
---|---|---|
vbNormal | 0 | 標準ファイル |
vbReadOnly | 1 | 読み取り専用ファイル |
vbHidden | 2 | 隠しファイル |
vbSystem | 4 | システム ファイル |
vbVolume | 8 | ボリューム ラベル。この値を指定すると、すべての属性は無効。 |
vbDirectory | 16 | フォルダ |