Base自分用のナレッジベース。Server、オープンソース系のシステムやフリーソフトに関する情報、iPhone、Androidスマホ便利情報など役立つ情報などを覚書しておくためのブログ。VBAフォルダを選択する[参照]ダイアログボックスを表示して選択されたフォルダを取得するサンプルプログラムを覚書。[参照]ダイアログボックスの初期フォルダを指定した上で表示する方法についても紹介しています。ExcelのVBAでGetOpenFilenameを使用して[ファイルを開く]ダイアログボックスを表示して選択されたファイル名を取得することはできるけど、例えばファイルまでの選択は必要なくてフォルダのみ選択させたい場合には、GetOpenFilenameではできない。使われるダイアログボックス自体が別物になるので当たり前ではあるんだけれど。2013で行っています。FileDialogオブジェクトを使用する際には必ず[参照設定]で以下のオブジェクトライブラリの参照を有効にしておく必要があります。Library※15.0というバージョンは、Excelのバージョンによって異なります。Library」の参照手順を記載します。Excelのリボンツールバーの[開発]タブをクリックする。Basic]をクリックする。Applications]画面(VBAエディタ)が開くので[ツール]メニューの[参照設定]をクリックする。Library」のチェックをオンにして[OK]をクリックする。[参照]ダイアログボックスの表示[参照]ダイアログボックスは、以下のようにフォルダのみユーザーが選択できるダイアログボックスです。[参照]ダイアログボックスをExcelのVBAで表示するには、FileDialogプロパティを使用します。FileDialogプロパティは、指定するオプション次第で[ファイルを開く]ダイアログボックスや[名前をつけて保存]ダイアログボックスとして表示することもできます。FileDialogプロパティを使用して[参照]ダイアログボックスを表示するサンプルプログラムまずは簡単な[参照]ダイアログボックスの表示サンプルプログラムを以下に紹介します。[参照]ダイアログボックスを表示し、選択されたフォルダをメッセージボックスで表示するサンプルプログラムです。Sub[キャンセル]ボタンが押された時の処理を追加したサンプルプログラム上記のサンプルプログラムだと[参照]ダイアログボックスで[キャンセル]ボタンが押された場合、エラーとなってしまうので、[キャンセル]ボタンが押された時の処理を追加します。"フォルダ選択がキャンセルされました。SubFileDialogプロパティを使用して[参照]ダイアログボックスを表示する際の初期フォルダを指定して表示するサンプルプログラム[参照]ダイアログボックスを開く際にあらかじめ指定したフォルダを初期フォルダとして選択された状態で表示するサンプルプログラムです。初期フォルダの指定は、"InitialFileName"に初期フォルダとして選択させたいフォルダのパスを指定します。"フォルダ選択がキャンセルされました。SubFileDialogプロパティを使用して[お気に入り]フォルダなど特殊なフォルダを初期フォルダとして選択させた状態で表示するサンプルプログラム[参照]ダイアログボックスの初期フォルダとして[お気に入り]フォルダや[デスクトップ]フォルダを初期フォルダとして指定したい場合のサンプルプログラムです。[お気に入り]フォルダや[デスクトップ]フォルダは、ログインするユーザーごとにパスが変わるため、プログラム内でパスを固定で指定することができません。Host"オブジェクトを使用してパスを取得します。"フォルダ選択がキャンセルされました。上記の方法で指定できる特殊フォルダは以下のとおりです。"SpecialFolders"の引数に下記の"対応するフォルダ"の"指定する文字列"の値を"(ダブルクォーテーション)でくくって指定すればよいです。対応するフォルダDesktopデスクトップフォルダFavoritesお気に入りフォルダFontsフォントフォルダMyDocumentsマイドキュメントフォルダProgramsプログラムフォルダRecent最近開いたファイルフォルダSendTo送るフォルダStartMenuスタートアップメニューフォルダStartUpスタートアップフォルダFileDialogプロパティを使用して[Windows]フォルダなどのシステムフォルダを初期フォルダとして選択させた状態で表示するサンプルプログラム[Windows]フォルダ、[System32]フォルダ、[Temp]フォルダを初期フォルダとして指定したい場合は、"FileSystemObject"オブジェクトを使用して各フォルダのパスを取得します。[Windows]フォルダはインストール時にユーザーが任意に指定できるので、必ずしも"C:\Windows"とは限りませんし、[Temp]フォルダもログインユーザーごとに異なるパスとなるため、プログラム内で固定して指定することができません。"フォルダ選択がキャンセルされました。Sub各システムフォルダと対応する値プログラム中の"GetSpecialFolder"に指定する数値によって、[Windows]フォルダ、[System32]フォルダ、[Temp]フォルダのどのフォルダが指定されているのかが決まっているので、指定したいフォルダを表す数値を"GetSpecialFolder"の引数に指定してください。0:[Windows]フォルダ1:[System32]フォルダ2:[Temp]フォルダFileDialogプロパティを使用して[参照]ダイアログボックスを表示するサンプルプログラムのまとめFileDialogプロパティを使用してフォルダのみ選択できるダイアログボックスを表示するサンプルプログラムを紹介しました。FileDialogプロパティに指定するオプション次第では[ファイルを開く]や[名前をつけて保存]ダイアログボックスとして使用することもできます。(Excel)」にも記載されているので参考にしてください。[お気に入り]フォルダや[Windows]フォルダなどの特殊なフォルダのパスを取得する方法については、別の記事「VBA:デスクトップフォルダやマイドキュメントフォルダなどWindowsの特殊フォルダのパスをVBAで取得する方法」にも記載されているので参考にしてください。ExcelのVBAで[ファイルを開く]ダイアログボックスや[名前をつけて保存]ダイアログボックスを使用するサンプルについては、以下の記事がありますので参考にしてください。VBA:[名前を付けて保存]ダイアログボックスを表示(GetSaveAsFilenameメソッド)して入力されたファイル名を取得する方法FileDialogプロパティについては、AccessのVBAの過去の記事で結構あるので、参考にしてください。FileDialogプロパティは、ExcelだけでなくAccessなど他のOfficeアプリケーションのVBAで共通して使えます。端末にAPNが正しく設定されていません。(11/05)プロフィールこのブログの中の人:billyboyこのブログを見に来てくれてありがとうございます。このブログの中の人はExcel、AccessのVBAに関するカスタマーサポート、技術ドキュメントのの作成業務を経験後、開発系SEを経て現在は金融系企業のシステム運用/保守SEとして働いています。当初自分が困ったときに解決した方法や社内/外からの技術的な問い合わせに回答した時に作ったプログラムなどを自分用の備忘録としてこのブログを開設しました。たくさんの方に見に来ていただけてることに気づいてからはなるべく誰が見てもわかるような記事内容にすることを意識して書いています。