こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。
皆さんは、VBAでフォルダを選択する方法を知っていますか?Excelを別名保存する場合や、PDFファイルに変換してファイル出力する場合など、フォルダを指定して処理を作るケースはよくあります。そこで今回は、
- FileDialogの使い方
- 具体的なサンプルコード
- フォルダを選択しなかった場合の対処方法
- 合わせて覚えると便利なファイルパス確認方法
といった基礎的なことから、応用的な方法まで、徹底的に解説します!
FileDialogの使い方とは
はじめに、FileDialogの使い方について解説します。FileDialogは以下のように書くことで、ダイアログボックスを開くことができます。
Application.FileDialog(処理の種類).Show
処理の種類は大きく分けて以下の4つです。
- ファイルを選択する場合:msoFileDialogFilePicker
- フォルダを選択する場合:msoFileDialogFolderPicker
- ファイルを開く場合 :msoFileDialogOpen
- ファイルを保存する場合:msoFileDialogSaveAs
フォルダを選択する場合はmsoFileDialogFolderPickerを選択しますが、他の引数を選択することでファイルパスを取得したり、ファイルを開いたりすることができます。
選択したフォルダパスは、以下のようにSelectedItems(1)で取得することができます。
Dim folderPath as String folderPath = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1)
このように、簡単にフォルダパスを取得することができます。
フォルダを選択するサンプルコード
次に、サンプルコードを使って、具体的な使い方を解説します。
サンプルコード:
Sub Test() Dim folderPath As Variant With Application.FileDialog(msoFileDialogFolderPicker) .Show folderPath = .SelectedItems(1) End With Debug.Print "選択したフォルダパス:" & folderPath End Sub
実行後:
C:UsersSiroDesktopVBA
このように、簡単にフォルダパスを取得することができます。応用すると、以下のように指定したフォルダにExcelを別名保存する処理も簡単に作ることができます。
ファイル保存サンプル:
Sub Test2() Dim folderPath As Variant With Application.FileDialog(msoFileDialogFolderPicker) .Show folderPath = .SelectedItems(1) End With ActiveWorkbook.SaveAs Filename:=folderPath & "保存サンプル.xlsm" End Sub
このように、選択したフォルダパスを使って処理を作るケースは多いので、使い方を覚えておくのがおすすめです!
フォルダ選択しなかった場合の対処方法
ここまでフォルダが選択されることを前提に処理を作ってきましたが、フォルダを選択せずにキャンセルするケースもありますよね?そのため、選択されなかった場合の対処方法を合わせて覚えておくのがおすすめです!
Showメソッドは実行後に選択したボタン(OK or キャンセル)によって戻り値が変わるので、その値を使って条件を作ります。
キャンセルボタンクリックを考慮したサンプルコード:
Sub Test3() Dim folderPath As Variant With Application.FileDialog(msoFileDialogFolderPicker) If .Show = 0 Then MsgBox "キャンセルボタンをクリックしました。" Exit Sub End If folderPath = .SelectedItems(1) End With Debug.Print "選択したフォルダパス:" & folderPath End Sub
If .Show = 0 Thenでキャンセルボタンのクリック判定後、MsgBoxでメッセージを表示し、最後にExit Subで処理を抜けています。このように、Showメソッドの戻り値を使えば簡単に処理を分けることができるので覚えておくと便利です!
ちなみに、IF文の使い方については以下で詳しく解説しているので、気になる方は見てみてくださいね!
まとめ
今回は、フォルダを選択する方法について解説しました。CSVファイルのインポート、ファイルの出力などフォルダを指定して処理を作るケースはよくあります。FileDialogは使い方も簡単なので、ぜひ使ってみてくださいね!