「VBAでダイアログボックスを表示して、特定のファイルを選択・保存したりしたいな...」
このように思ったことはありませんか?

ダイアログボックスで「ファイル」や「フォルダ」を自分で選択したい。



その場合は、VBAの「FileDialog (ファイルダイアログ)」を
使用すると解決します!
この記事では、エクセルVBAを使って「FileDialog (ファイルダイアログ)」を利用する方法を詳しくご紹介します。
「FileDialog」を使用することで、ユーザーが簡単に「フォルダ」や「ファイル」を選択できるようになり、手作業でのファイル指定が不要になります。
これにより、選択ミスが減り、作業効率が大幅に向上します。
基本的な使い方から応用的なテクニックまで、初心者でもすぐに実践できる内容です。
ぜひ最後までお読みください。
【 この記事の概要 】
よく使う度 | |
難しさ | |
覚えておくと安心度 |
「VBAを使ってExcelの作業を効率化したいけど、どの本から始めたらいいか迷っている…」
そんな悩みはありませんか?
初心者がつまずきやすいのは、「基礎をしっかり理解できる本選び」です。
最初につまずくと、VBAに苦手意識を持ってしまい、学習が続きませんよね。
そんな方におすすめなのが、初心者に寄り添い、丁寧に解説されたVBAの入門書です。
- VBAの基礎を丁寧に、ゼロから分かりやすく解説
- 具体的なサンプルコードで、実務ですぐに使えるスキルが身につく
- 手元に置いて何度も確認できるため、挫折せずに学習を続けられる
動画で学ぶのもいいけど、まずはじっくり書籍で学びたい!という方には特におすすめです。




この記事を見てできるようになること
- 「FileDialog」とはどういうものか?理解する
- 引数「fileDialogType」による動作の違いにを習得する
- 「FileDialog」がどのような場面で使用されるのか?把握する
- 「FileDialog」を使用するうえの注意ポイントを把握する
- 「FileDialog」の使用方法を習得する
VBAの「FileDialog」ってなに?
VBAの「FileDialog (ファイルダイアログ)」は、次のような画面 (ダイアログボックス)から「ファイルを選択」「ファイルを保存」することができます。
「FileDialog」を活用することで、作業の正確性と効率が向上し、手作業によるミスを最小限に抑えることができます。


それでは、「FileDialog」の構成について説明を行っていきます。
VBAのコード量が多くて大変そうに思えるかもしれませんが、心配いりません。
必要な部分をコピペして使いまわすだけで十分活用できます。
VBAの「FileDialog」の構成を解説


引数の「fileDialogType」について解説
「fileDialogType」には4つの種類があり、それぞれ異なる目的で使用されます。
これらを理解し使い分けることで、状況に応じた適切な動作を簡単に実装できます。
※各タイプの具体的な動作については、次のセクションで詳しく解説します。
種類 | 説明 | リンク |
---|---|---|
msoFileDialogOpen | ファイルを開くために使用 | 使用例はこちら |
msoFileDialogSaveAs | ファイルを保存するために使用 | 使用例はこちら |
msoFileDialogFilePicker | ファイル選択のために使用 | 使用例はこちら |
msoFileDialogFolderPicker | フォルダ選択のために使用 | 使用例はこちら |
FileDialogの「引数」と「メソッド」について解説
VBAのFileDialogには、様々な「プロパティ」と「メソッド」があります。
ここでは、主要なものを紹介します。


プロパティについて
プロパティ | 説明 |
---|---|
InitialFileName | ダイアログを開いたときに表示される初期のフォルダパスを指定します。 |
AllowMultiSelect | ファイルを複数選択できるようにするかどうか?を指定します。 ・Trueの場合、複数のファイルを選択。 ・Falseの場合、1つのファイルのみ選択。 |
Title | ダイアログのタイトルを指定します。 |
Filters | ダイアログに表示されるファイルのフィルターを設定します。 |
SelectedItems | ユーザーが選択したファイルやフォルダのパスを取得します。 |
メソッドについて
メソッド | 説明 |
---|---|
Show | ダイアログを表示し、ユーザーが選択を完了するまで待機します。 |
Execute | 選択したファイルを開きます(msoFileDialogOpenの場合)。 |
より詳しい情報は、Microsoft公式 – FileDialog プロパティを参照してみてください。
引数「fileDialogType」の違いによる動作について
FileDialogの引数「fileDialogType」によって、ダイアログボックスの動作がどのように変わるかを説明します。
実際にコードをコピペして、試してみてください!
「msoFileDialogOpen」の場合の動作 ( ファイルを開く )
「ファイルを開く」ためのダイアログボックスについて解説します。
「クリック」で、コード・解説を開く
Sub msoFileDialogOpen_test()
With Application.FileDialog(msoFileDialogOpen)
.InitialFileName = "C:\サンプル"
.AllowMultiSelect = False
.Title = "msoFileDialogOpenの動作テスト"
If .Show = True Then
.Execute
MsgBox "選択したファイルを開きました。" & vbLf & .SelectedItems(1)
End If
End With
End Sub
解説
このコードを実行すると、次の動作を行います。
- ダイアログが出てきて、ファイルが選択できるようになる。
- ファイルを選択する。
- 選択したファイルが開く。
- 「選択したファイルを開きました」とメッセージボックスが出てくる。
詳細の設定は、次のように行っています。
コード詳細
- With Application.FileDialog(msoFileDialogOpen)
- 今回は「msoFileDialogOpen」を使用しています。
※ファイルを開くためのダイアログボックスです。
- 今回は「msoFileDialogOpen」を使用しています。
- .InitialFileName = “C:\サンプル”
- ダイアログを開いたときに表示される初期フォルダのパスを指定します。
- .AllowMultiSelect = False
- ファイルを複数選択できるようにする場合は「True」とします。
- .Title = “msoFileDialogOpenの動作テスト”
- ダイアログのタイトルを指定します。
- If .Show = True Then
- ファイルを選択したかどうかを判断します。
キャンセルした場合、何も実行しません。
- ファイルを選択したかどうかを判断します。
- .Execute
- 選択したファイルを開きます。
- MsgBox “選択したファイルを開きました。” & vbLf & .SelectedItems(1)
- メッセージボックスで、メッセージと開いたファイルパスを表示させます。
「msoFileDialogSaveAs」の場合の動作 ( ファイルを保存 )
「ファイルを保存」するためのダイアログボックスについて解説します。
「クリック」で、コード・解説を開く
Sub msoFileDialogSaveAs_test()
Dim savePath As String
With Application.FileDialog(msoFileDialogSaveAs)
.InitialFileName = "C:\サンプル"
.AllowMultiSelect = False
.Title = "msoFileDialogSaveAsの動作テスト"
If .Show = True Then
savePath = .SelectedItems(1)
'// 保存操作を実行
ActiveWorkbook.SaveAs Filename:=savePath, FileFormat:=xlOpenXMLWorkbookMacroEnabled
MsgBox "ファイルを保存しました。" & vbLf & savePath
End If
End With
End Sub
解説
このコードを実行すると、次の動作を行います。
- ダイアログが出てきて、ファイルの保存箇所が選択できるようになる。
- フォルダを選択する。
※実行の際「ファイルの種類(T):」は、初期で「.xlsx」となっています。
「.xlsm」に変更しないと、ファイル保存の際にエラーが出るので注意が必要です。 - ファイルが保存される。
- 「ファイルを保存しました」と、メッセージボックスが出てくる。
詳細の設定は、次のように行っています。
コード詳細
- Dim savePath As String
- 「savePath」という変数を宣言します。
- With Application.FileDialog(msoFileDialogSaveAs)
- 今回は「msoFileDialogSaveAs」を使用しています。
※ファイルを保存するためのダイアログボックスです。
- 今回は「msoFileDialogSaveAs」を使用しています。
- .InitialFileName = “C:\サンプル”
- ダイアログを開いたときに表示される初期フォルダのパスを指定します。
今回は保存を行いたいパスとなります。
- ダイアログを開いたときに表示される初期フォルダのパスを指定します。
- .AllowMultiSelect = False
- ファイルを複数選択できるようにする場合は「True」とします。
- .Title = “msoFileDialogSaveAsの動作テスト”
- ダイアログのタイトルを指定します。
- If .Show = True Then
- ファイルを選択したかどうかを判断します。
キャンセルした場合、何も実行しません。
- ファイルを選択したかどうかを判断します。
- savePath = .SelectedItems(1)
- 変数に取得したファイルパスを取得します。
- ActiveWorkbook.SaveAsFilename:=savePath,FileFormat:=xlOpenXMLWorkbookMacroEnabled
- ファイルを保存します。
今回は、拡張子を「.xlsm」で保存できるように設定しています。
- ファイルを保存します。
- MsgBox “選択したファイルを開きました。” & vbLf & .SelectedItems(1)
- メッセージボックスで、メッセージと保存したファイルパスを表示させます。
「msoFileDialogFilePicker」の場合の動作 ( ファイル選択 )
「ファイルを選択」するためのダイアログボックスについて解説します。
「クリック」で、コード・解説を開く
Sub msoFileDialogFilePicker_test()
With Application.FileDialog(msoFileDialogFilePicker)
.InitialFileName = "C:\サンプル"
.AllowMultiSelect = False
.Title = "msoFileDialogFilePickerの動作テスト"
If .Show = True Then
MsgBox "ファイルが選択されました。" & vbLf & .SelectedItems(1)
End If
End With
End Sub
解説
このコードを実行すると、次の動作を行います。
- ダイアログが出てきて、ファイルが選択できるようになる。
- ファイルを選択する。
- 「選択したファイルを開きました」と、メッセージボックスが出てくる。
詳細の設定は、次のように行っています。
コード詳細
- With Application.FileDialog(msoFileDialogFilePicker)
- 今回は「msoFileDialogFilePicker」を使用しています。
※ファイルを選択するためのダイアログボックスです。
- 今回は「msoFileDialogFilePicker」を使用しています。
- .InitialFileName = “C:\サンプル”
- ダイアログを開いたときに表示される初期フォルダのパスを指定します。
- .AllowMultiSelect = False
- ファイルを複数選択できるようにする場合は「True」とします。
- .Title = “msoFileDialogFilePickerの動作テスト”
- ダイアログのタイトルを指定します。
- If .Show = True Then
- ファイルを選択したかどうかを判断します。
キャンセルした場合、何も実行しません。
- ファイルを選択したかどうかを判断します。
- MsgBox “ファイルが選択されました。” & vbLf & .SelectedItems(1)
- メッセージボックスで、メッセージと選択し取得したファイルパスを表示させます。
「msoFileDialogFolderPicker」の場合の動作 ( フォルダ選択 )
「フォルダを選択」するためのダイアログボックスについて解説します。
「クリック」で、コード・解説を開く
Sub msoFileDialogFolderPicker_test()
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = "C:"
.AllowMultiSelect = False
.Title = "msoFileDialogFolderPickerの動作テスト"
If .Show = True Then
MsgBox "フォルダが選択されました。" & vbLf & .SelectedItems(1)
End If
End With
End Sub
解説
このコードを実行すると、次の動作を行います。
- ダイアログが出てきて、フォルダーが選択できるようになる。
- フォルダーを選択する。
- 「選択したフォルダーを開きました」と、メッセージボックスが出てくる。
詳細の設定は、次のように行っています。
コード詳細
- With Application.FileDialog(msoFileDialogFolderPicker)
- 今回は「msoFileDialogFolderPicker」を使用しています。
※フォルダーを選択するためのダイアログボックスです。
- 今回は「msoFileDialogFolderPicker」を使用しています。
- .InitialFileName = “C:”
- ダイアログを開いたときに表示される初期フォルダのパスを指定します。
- .AllowMultiSelect = False
- ファイルを複数選択できるようにする場合は「True」とします。
- .Title = “msoFileDialogFolderPickerの動作テスト”
- ダイアログのタイトルを指定します。
- If .Show = True Then
- ファイルを選択したかどうかを判断します。
キャンセルした場合、何も実行しません。
- ファイルを選択したかどうかを判断します。
- MsgBox “フォルダが選択されました。” & vbLf & .SelectedItems(1)
- メッセージボックスで、メッセージと選択し取得したフォルダーパスを表示させます。
VBAの「FileDialog」は、どのようなときに使用するか?
「FileDialog (ファイルダイアログ)」は、次のようなシーンで非常に役立ちます。
- 特定のファイルを選択して開きたいとき
- ユーザーに任意のExcelファイルを選ばせ、その内容を処理するプログラムを作成する際に使用すると便利です。
- 複数のファイルをまとめて処理したいとき
- 複数の画像ファイルを選択し、リサイズやフォーマット変換を行う場合など、複数ファイルを一括で選択して処理したいときに役立ちます。
- ユーザーに保存先を指定させたいとき
- 作成したレポートをPDF形式で保存するなど、ユーザーが保存場所やファイル名を自由に選べるようにしたいときに使うと便利です。
- フォルダー単位で操作したいとき
- 特定のフォルダー内にあるすべてのExcelファイルを開いて処理するプログラムを作成する際に、ユーザーにフォルダーを選ばせることができます。
VBAの「FileDialog」を使用するうえでの、注意ポイント
「FileDialog (ファイルダイアログ)」を使用する際は、次のようなポイントに注意しましょう。
- ファイルの選択とフォルダーの選択は同時に行えない
- FileDialogでは、ファイルの選択とフォルダーの選択を同時に行うことができません。
同時に両方を取得したい場合は、FileDialogのコードを個別に記載して、別々に取得する必要があります。
- FileDialogでは、ファイルの選択とフォルダーの選択を同時に行うことができません。
- ユーザーの選択キャンセルへの対応
- FileDialogでユーザーがファイルやフォルダを選択せずにキャンセルボタンを押した場合、エラーが発生することがあります。
そのため、If .Show = True Then を使って、選択が行われたかどうかを必ずチェックし、選択がキャンセルされた場合の処理(何もしない、またはメッセージを表示するなど)を適切に行うことが重要です。
- FileDialogでユーザーがファイルやフォルダを選択せずにキャンセルボタンを押した場合、エラーが発生することがあります。
- AllowMultiSelectの設定に注意
- AllowMultiSelectプロパティをTrueに設定すると、複数のファイルやフォルダを選択できるようになりますが、複数選択時の処理が複雑になる場合があります。
選択された複数の項目をどのように処理するかをあらかじめ設計しておくことが必要です。
- AllowMultiSelectプロパティをTrueに設定すると、複数のファイルやフォルダを選択できるようになりますが、複数選択時の処理が複雑になる場合があります。
- フィルター設定の順番に注意
- FileDialogのFiltersプロパティを使ってファイルのフィルタリングを行う場合、設定する順番が重要です。
最初のフィルターがデフォルトで選択されるため、優先度の高いフィルターを最初に設定するようにしましょう。
- FileDialogのFiltersプロパティを使ってファイルのフィルタリングを行う場合、設定する順番が重要です。
VBAの「FileDialog」の使用例をご紹介
それでは、FileDialogの使用例を紹介します。
以下に紹介する使用例は、すべてコピペしてすぐに実行できるコードです。
気になる例は、ぜひご覧いただき、実際に実行してみてください。
VBAをしっかり学びたいけれど、「どこから始めればいいかわからない」と迷っていませんか?
そんな方には、UdemyのVBA講座がおすすめです。
動画での丁寧な解説や、実践的な学習スタイルで、初心者でも無理なく基礎から応用まで習得できます。
自己学習を進める上で、何度でも繰り返し見返せる講座は非常に心強い味方になりますよ!


\ 自分のペースで学べるVBA講座はこちら /
使用例1: 複数のファイル名を取得し、メッセージボックスで表示する
ダイアログボックスで複数のファイルを選択し、そのファイルをメッセージボックスで表示させる方法を紹介します。
主な使用用途 :
選択した複数の画像ファイルをリサイズしたり、複数のExcelファイルを開いて内容を処理したりする場合に便利です。
Sub 複数のファイルを選択する()
Dim selectedFiles As String
Dim i As Long
With Application.FileDialog(msoFileDialogFilePicker)
.InitialFileName = "C:\サンプル"
.AllowMultiSelect = True
.Title = "使用例1: 複数のファイルをダイアログで選択する"
If .Show = True Then
selectedFiles = "ファイルが選択されました。" & vbLf
For i = 1 To .SelectedItems.Count
selectedFiles = selectedFiles & .SelectedItems(i) & vbLf
Next i
MsgBox selectedFiles
End If
End With
End Sub
処理結果


コードの動作概要
Application.FileDialog(msoFileDialogFilePicker)を使用して、ユーザーにファイル選択のためのダイアログボックスを表示します。
.AllowMultiSelect = True によって、複数のファイルを一度に選択できるように設定します。
ユーザーが選択したすべてのファイルをループで処理し、そのファイル名をselectedFilesに取得します。
選択されたファイルのリストをメッセージボックスで表示します。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- With Application.FileDialog(msoFileDialogFilePicker)
- 今回は「msoFileDialogFilePicker」を使用しています。
※ファイルを選択するためのダイアログボックスです。
- 今回は「msoFileDialogFilePicker」を使用しています。
- InitialFileName = “C:\サンプル”
- ダイアログを開いたときに表示される初期フォルダのパスを指定します。
- .AllowMultiSelect = True
- 複数のファイルを選択できるようにするため「True」に設定します。
- .Title = “使用例1: 複数のファイルをダイアログで選択する”
- ダイアログのタイトルを指定します。
- If .Show = True Then
- ファイルを選択したか?判断を行います。
キャンセルした場合、何も実行しません。
- ファイルを選択したか?判断を行います。
- For i = 1 To .SelectedItems.Count
selectedFiles = selectedFiles & .SelectedItems(i) & vbLf
Next i- 複数ファイルを選択した場合、「.SelectedItems.Count」でカウントし、
そのファイル数をFor文でループしてファイル名を「selectedFiles」に取得します。
- 複数ファイルを選択した場合、「.SelectedItems.Count」でカウントし、
- MsgBox selectedFiles
- メッセージボックスで、メッセージと選択し取得したフォルダーパスを表示させます。
このコードを使用すると、複数のファイルを一括処理する必要がある場合に非常に便利です。
各ファイルに対する後続の処理をこの基盤の上で追加することで、様々な用途に応用可能です。
使用例2: フィルターを使用し、特定のファイルだけ選択する
エクセルファイルだけを選択できるように「フィルター」を設定して、ファイルを選択する方法を紹介します。
主な使用用途 :
Excelファイルだけを選択できるようにし、誤ったファイル形式が選ばれることを防ぎます。
これは、データ入力やファイル操作の正確性を高める際に特に有効です。
Sub ファイルフィルターを追加して選択する()
With Application.FileDialog(msoFileDialogFilePicker)
.InitialFileName = "C:\サンプル"
.AllowMultiSelect = False
.Title = "使用例2: ファイルフィルターを追加して選択する"
.Filters.Clear
.Filters.Add "Excel Files", "*.xlsx; *.xlsm", 1
.Filters.Add "All Files", "*.*", 2
If .Show = True Then
MsgBox "ファイルが選択されました。" & vbLf & .SelectedItems(1)
End If
End With
End Sub
処理結果


コードの動作概要
Application.FileDialog(msoFileDialogFilePicker)を使用して、ユーザーにファイル選択のためのダイアログボックスを表示します。
.InitialFileName = “C:\サンプル” でダイアログを開いた際に表示される初期フォルダのパスを指定し、.Title でダイアログのタイトルを設定します。
.Filters.Clear で既存のフィルターをクリアし、.Filters.Add を使って「Excelファイル」や「すべてのファイル」を表示するフィルターを追加します。
ユーザーがファイルを選択した場合、そのファイルのパスをメッセージボックスで表示します。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- With Application.FileDialog(msoFileDialogFilePicker)
- 今回は「msoFileDialogFilePicker」を使用しています。
※ファイルを選択するためのダイアログボックスです。
- 今回は「msoFileDialogFilePicker」を使用しています。
- InitialFileName = “C:\サンプル”
- ダイアログを開いたときに表示される初期フォルダのパスを指定します。
- .AllowMultiSelect = False
- ファイルを1つしか選択できないように「False」を設定します。
- .Title = “使用例2: ファイルフィルターを追加して選択する”
- ダイアログのタイトルを指定します。
- .Filters.Clear
- 既存のフィルターをクリアします。
- .Filters.Add “Excel Files”, “*.xlsx; *.xlsm”, 1
.Filters.Add “All Files”, “.“, 2- エクセルファイルのみを表示するフィルター 及び、すべてのファイルを表示するフィルターを追加します。
インデックス番号「1や2」は、フィルターが表示される順番になります。
- エクセルファイルのみを表示するフィルター 及び、すべてのファイルを表示するフィルターを追加します。
- If .Show = True Then
MsgBox “ファイルが選択されました。” & vbLf & .SelectedItems(1)
End Ifow = True Then- ファイルを選択したかどうかを判断し、選択した場合はそのファイルのパスをメッセージボックスに表示します。
このコードは、特定の種類のファイルのみを選択させたい場合に非常に有用です。
フィルターを適用することで、ユーザーが誤ったファイルを選択することを防ぎ、操作の正確性を確保します。
また、選択されたファイルのパスを簡単に取得し、後続の処理に活用できるため、VBAを使ったファイル操作を効率化することができます。
使用例3: ファイル選択をキャンセルしてもエラーが発生しない処理
ユーザーが「キャンセル」をクリックした場合でもエラーが発生せず、処理を安全に終了する方法を紹介します。
この方法では、ファイルダイアログを関数内で処理し、キャンセル時には空の文字列を返すことでエラーを防ぎます。
主な使用用途
このコードは、VBAでファイルを選択するダイアログを使用する際、ユーザーがファイルを選択しなかった場合(キャンセルした場合)でもエラーが発生しないようにしたい場合に使用します。ファイルが選択された場合のみ、後続の処理を実行できます。
Sub MainProcess()
Dim filePath As String
'// ファイルダイアログを使用してファイルを選択
filePath = SelectFileDialog()
'// キャンセルされた場合、処理を終了
If filePath = "" Then
MsgBox "キャンセルされました。処理を終了します。"
Exit Sub
End If
'// ファイルが選択された場合の処理
MsgBox "選択されたファイル: " & filePath
'// ここにファイルを開く処理などを追加
End Sub
Function SelectFileDialog() As String
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "ファイルを選択してください"
.InitialFileName = "C:\サンプル"
.AllowMultiSelect = False
'// ユーザーがファイルを選択したかどうかを確認
If .Show = True Then
'// 選択されたファイルパスを返す
SelectFileDialog = .SelectedItems(1)
Else
'// キャンセルされた場合は空の文字列を返す
SelectFileDialog = ""
End If
End With
End Function
処理結果


コードの動作概要
MainProcess サブルーチンを実行し、関数「SelectFileDialog」を呼び出してファイル選択ダイアログを表示します。
ユーザーがファイルを選択した場合、そのパスを変数「filePath」に格納します。
If filePath = “” Then の条件で、ファイル選択がキャンセルされたかどうかを確認します。
キャンセルされた場合、メッセージを表示してサブルーチンを終了します。
ファイルが選択された場合のみ、選択されたファイルのパスをメッセージボックスに表示します。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub MainProcess()
- ここでは新しいサブルーチン(プロシージャ)を定義しています。
Subは「サブプロシージャ」を意味し、MainProcessはこのプロシージャの名前です。
このプロシージャが呼び出されると、指定された一連の処理が実行されます。
- ここでは新しいサブルーチン(プロシージャ)を定義しています。
- Dim filePath As String
- 変数「filePath」を宣言しています。
String型の変数で、ファイルのパス(ファイルの場所)を格納するために使用します。
- 変数「filePath」を宣言しています。
- filePath = SelectFileDialog()
- ここでは、「SelectFileDialog」という関数を呼び出し、その戻り値(選択されたファイルのパス)を変数「filePath」に格納します。
「SelectFileDialog()」は、後ほど定義される関数で、ファイルダイアログを表示し、選択されたファイルのパスを返します。
- ここでは、「SelectFileDialog」という関数を呼び出し、その戻り値(選択されたファイルのパス)を変数「filePath」に格納します。
- If filePath = “” Then
- If文を使って、変数「filePath」が空の文字列であるかどうかをチェックします。
ここでは、ユーザーがファイル選択ダイアログで「キャンセル」をクリックした場合(filePathが空文字列となる場合)に備えた処理を行っています。
- If文を使って、変数「filePath」が空の文字列であるかどうかをチェックします。
- MsgBox “キャンセルされました。処理を終了します。”
- MsgBox関数を使ってメッセージボックスを表示します。
ここでは「キャンセルされました。処理を終了します。」というメッセージが表示されます。
- MsgBox関数を使ってメッセージボックスを表示します。
- Exit Sub
- Exit Sub命令でサブルーチンを途中で終了します。
ここでは、ユーザーがファイル選択をキャンセルした場合、これ以上の処理を行わずに終了するために使用します。
- Exit Sub命令でサブルーチンを途中で終了します。
- End If
- If文の終了を示します。
これ以降の処理は、ファイルが選択されたかどうかに関わらず実行されます。
- If文の終了を示します。
- MsgBox “選択されたファイル: ” & filePath
- この行では、選択されたファイルのパスを表示します。
MsgBoxで表示するメッセージにfilePathの内容を連結(&)して、「選択されたファイル: [ファイルパス]」というメッセージを表示します。
これにより、ユーザーはどのファイルを選んだか確認できます。
- この行では、選択されたファイルのパスを表示します。
- End Sub
- これはサブルーチンの終了を示しています。
MainProcessプロシージャの処理がここで終了します。
- これはサブルーチンの終了を示しています。
- Function SelectFileDialog() As String
- ここで新しい関数「SelectFileDialog」を定義しています。
この関数はファイルダイアログを表示し、ユーザーが選択したファイルのパスを文字列(String 型)として返す機能を持っています。
この関数は、ファイルが選択されなかった場合には空の文字列を返します。
- ここで新しい関数「SelectFileDialog」を定義しています。
- With Application.FileDialog(msoFileDialogFilePicker)
- Withステートメントは、指定したオブジェクトに対して複数のプロパティやメソッドを続けて実行するために使用されます。
ここでは、Application.FileDialog(msoFileDialogFilePicker)オブジェクト(ファイル選択ダイアログボックス)に対して操作を行います。
- Withステートメントは、指定したオブジェクトに対して複数のプロパティやメソッドを続けて実行するために使用されます。
- .Title = “ファイルを選択してください”
- ファイル選択ダイアログのタイトルを「ファイルを選択してください」に設定しています。
このタイトルはダイアログボックスのウィンドウ上部に表示されます。
- ファイル選択ダイアログのタイトルを「ファイルを選択してください」に設定しています。
- .InitialFileName = “C:\サンプル”
- ダイアログが開いたときに最初に表示される初期フォルダのパスを指定しています。
ここでは、「C:\サンプル」というフォルダが最初に表示されるように設定されています。
- ダイアログが開いたときに最初に表示される初期フォルダのパスを指定しています。
- .AllowMultiSelect = False
- ユーザーが複数のファイルを選択できるかどうかを設定しています。
Falseに設定することで、ユーザーは1つのファイルしか選択できません。
- ユーザーが複数のファイルを選択できるかどうかを設定しています。
- If .Show = True Then
- ファイルダイアログを表示し、ユーザーがファイルを選択したかどうかを確認します。
Showメソッドはダイアログを表示し、「OK」がクリックされた場合は「True」を返し、「キャンセル」がクリックされた場合は「False」を返します。
- ファイルダイアログを表示し、ユーザーがファイルを選択したかどうかを確認します。
- SelectFileDialog = .SelectedItems(1)
- ユーザーが選択したファイルのパスを、関数「SelectFileDialog」の戻り値として設定します。
.SelectedItems(1)で、ユーザーが選択した最初のファイルのパスを取得します。
- ユーザーが選択したファイルのパスを、関数「SelectFileDialog」の戻り値として設定します。
- Else
‘// キャンセルされた場合は空の文字列を返す
SelectFileDialog = “”- If文の「それ以外」のケースを指定しています。
ここでは、ユーザーがファイル選択をキャンセルした場合の処理を定義しています。 - ユーザーがファイル選択をキャンセルした場合、空の文字列””を関数の戻り値として設定します。
これにより、MainProcessサブルーチンでキャンセルを検知できるようになります。
- If文の「それ以外」のケースを指定しています。
- End If
- If文の終了を示します。
これ以降の処理は、ファイルが選択されたかどうかに関わらず実行されます。
- If文の終了を示します。
- End With
- Withステートメントの終了を示します。
ここで、FileDialogオブジェクトに対する操作が終了します。
- Withステートメントの終了を示します。
- End Function
- 関数の終了を示します。
これで関数「SelectFileDialog」の処理が完了し、呼び出し元に戻ります。
関数はSelectFileDialogに格納された値を返します。
- 関数の終了を示します。
このコードは、ユーザーがファイルダイアログで「キャンセル」を選択した場合でも、エラーを出さずにスムーズに処理を終了させる方法を提供します。
特に、ファイルを開く前にユーザーの選択を確認し、キャンセル時に適切なメッセージを表示することで、ユーザーフレンドリーなインターフェースを実現します。
この構成を使用することで、ファイル選択ダイアログをより安全かつ効果的に扱うことができ、エラー処理やユーザー体験の向上が期待できます。
使用例4: フォルダを選択し、保管されているファイルをセルに転記する方法
ダイアログボックスでフォルダを選択し、Dir関数を使用しそのフォルダ内にあるファイルのリストをExcelのセルに転記する方法を紹介します。
主な使用用途
選択したフォルダ内のファイルをリストとして表示したり、特定の処理を実行する際に便利です。
例えば、指定フォルダ内のすべてのファイルを一括で処理する場合に有効です。
Sub FolderToCell()
Dim folderPath As String
Dim fileName As String
Dim i As Integer
'// フォルダ選択ダイアログを表示
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = "C:\サンプル"
.Title = "フォルダを選択してください"
If .Show = True Then
folderPath = .SelectedItems(1) & "\"
Else
MsgBox "フォルダが選択されませんでした。"
Exit Sub
End If
End With
'// 選択したフォルダ内のファイルを取得してセルに転記
i = 1
fileName = Dir(folderPath & "*.*") '// フォルダ内の最初のファイルを取得
Do While fileName <> ""
Cells(i, 1).Value = fileName '// A列にファイル名を転記
i = i + 1
fileName = Dir '// 次のファイルを取得
Loop
End Sub
処理結果


コードの動作概要
Application.FileDialog(msoFileDialogFolderPicker) を使用して、フォルダを選択するためのダイアログボックスを表示します。
ユーザーが選択したフォルダのパスを変数「folderPath」に格納します。
Dir 関数を使用して、フォルダ内の最初のファイルを取得し、それをセルに転記します。
Do While ループを使い、フォルダ内の全てのファイルを順に取得し、Excelのセルに転記します。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub FolderToCell()
- ここでは、新しいサブルーチン FolderToCell を定義しています。
Excelのセルにフォルダ内のファイルをリスト表示する処理を行います。
- ここでは、新しいサブルーチン FolderToCell を定義しています。
- Dim folderPath As String
- 「folderPath」は選択されたフォルダのパスを格納する文字列型の変数です。
- Dim fileName As String
- 「fileName」はフォルダ内のファイル名を格納するための文字列型の変数です。
- Dim i As Long
- 「i」は、セルの行番号を管理するための整数型の変数です。
- With Application.FileDialog(msoFileDialogFolderPicker)
- Application.FileDialog(msoFileDialogFolderPicker) を使って、フォルダを選択するためのダイアログを表示します。
With ステートメントを使うことで、同じオブジェクトに対する複数の操作を簡潔に記述できます。
- Application.FileDialog(msoFileDialogFolderPicker) を使って、フォルダを選択するためのダイアログを表示します。
- .InitialFileName = “C:\サンプル”
- ダイアログを開いたときの初期フォルダのパスを指定します。
ここでは「C:\サンプル」が初期フォルダとして表示されます。
- ダイアログを開いたときの初期フォルダのパスを指定します。
- .Title = “フォルダを選択してください”
- ダイアログボックスのタイトル(ウィンドウ上部に表示されるテキスト)を「フォルダを選択してください」に設定します。
- If .Show = True Then
- ダイアログを表示し、ユーザーが「OK」をクリックしたかどうかを確認します。
「True」ならばフォルダが選択され、「キャンセル」を押された場合は「False」となります。
- ダイアログを表示し、ユーザーが「OK」をクリックしたかどうかを確認します。
- folderPath = .SelectedItems(1) & “\”
- ユーザーが選択したフォルダのパスを取得し、変数「folderPath」に格納します。
「& “\”」 で、フォルダパスの末尾に必ず「\」を追加しています。
- ユーザーが選択したフォルダのパスを取得し、変数「folderPath」に格納します。
- Else
MsgBox “フォルダが選択されませんでした。”
Exit Sub
End If- ユーザーがフォルダを選択しなかった場合、「フォルダが選択されませんでした。」というメッセージを表示し、処理を終了します。
Exit Sub によりサブルーチンの実行を中断します。
- ユーザーがフォルダを選択しなかった場合、「フォルダが選択されませんでした。」というメッセージを表示し、処理を終了します。
- End With
- With ステートメントの終了を示します。
ここで、フォルダ選択に関する操作は終了します。
- With ステートメントの終了を示します。
- i = 1
- セルの行番号として使用する「i」に、初期値として「1」を設定します。
これで、A列の1行目からファイル名が転記される準備が整います。
- セルの行番号として使用する「i」に、初期値として「1」を設定します。
- fileName = Dir(folderPath & “*.*”)
- Dir 関数を使って、指定したフォルダ内の最初のファイルを取得し、そのファイル名を変数「fileName」に格納します。
- Do While fileName <> “”
- 変数「fileName」が空でない限り、ループを繰り返します。
つまり、フォルダ内の全てのファイルを処理します。
- 変数「fileName」が空でない限り、ループを繰り返します。
- Cells(i, 1).Value = fileName
- Cells(i, 1) にファイル名を転記します。
「i」は現在の行番号、「1」は「A列」を示しています。
- Cells(i, 1) にファイル名を転記します。
- i = i + 1
- 次の行にファイル名を転記するために、「i」を「1」増やします。
これで次のファイル名はA列の次の行に転記されます。
- 次の行にファイル名を転記するために、「i」を「1」増やします。
- fileName = Dir
- Dir 関数を再度呼び出して、フォルダ内の次のファイルを取得します。
これにより、ループが続行されます。
- Dir 関数を再度呼び出して、フォルダ内の次のファイルを取得します。
- Loop
- Do While ループの終了を示します。
すべてのファイルを取得するまで、ループが繰り返されます。
- Do While ループの終了を示します。
- End Sub
- サブルーチンの終了を示します。
この時点で、選択したフォルダ内のすべてのファイルがA列に転記され、処理が完了します。
- サブルーチンの終了を示します。
このコードは、ユーザーが選択したフォルダ内の全てのファイルをExcelのセルにリスト表示するのに便利です。
特定のフォルダ内のファイルを一括で処理する場合などに応用できます。
これにより、ファイル選択や管理が簡単に行えるようになります。
「FileDialog」のまとめ
エクセルVBAでファイル選択ダイアログや保存ダイアログを表示する「FileDialog」は、非常に多くの場面で活用できます。
基本的な「FileDialog」の使い方から、応用までを理解することで、ユーザーが簡単にファイル操作を行うことができるようになります。
ポイントのおさらい
- 「FileDialog」の基本的な使い方を理解する
- FileDialogは、ユーザーがファイルやフォルダーを選択するためのダイアログボックスです。
以下の4つのタイプがあります。用途によって使い分けましょう。
⇒ msoFileDialogOpen(ファイルを開く)
⇒ msoFileDialogSaveAs(ファイルを保存)
⇒ msoFileDialogFilePicker(ファイルを選択)
⇒ msoFileDialogFolderPicker(フォルダーを選択)
- FileDialogは、ユーザーがファイルやフォルダーを選択するためのダイアログボックスです。
- 「FileDialog」はどのようなときに使用するか?
- FileDialogは、特定のファイルやフォルダーをユーザーに選ばせたいときに使用されます。
例えば、ユーザーに特定のExcelファイルを選択させて開く、複数のファイルをまとめて処理する、保存先を指定させる、といったシナリオで役立ちます。
⇒ 「FileDialogは、どのようなときに使用するか?」をもう一度見る。
- FileDialogは、特定のファイルやフォルダーをユーザーに選ばせたいときに使用されます。
- 「FileDialog」を使用するうえでの注意ポイント
- ファイルとフォルダーの選択は同時に行えないため、別々に取得する必要があります。
また、AllowMultiSelectを設定すると複数ファイルを選択できますが、その際の処理が複雑になる場合があるため、事前に設計しておくことが重要です。
⇒ 「FileDialogを使用するうえでの、注意ポイント」もう一度見る。
- ファイルとフォルダーの選択は同時に行えないため、別々に取得する必要があります。
- 「FileDialog」を使って作業効率を向上させよう
- FileDialogの基本を押さえることで、VBAでのファイル操作がスムーズになり、ユーザーの入力に柔軟に対応できます。
例えば、複数のファイルを一括で処理する、ユーザーに保存先を選ばせる、といった操作が簡単に行えるようになります。
これにより、業務の効率を大幅に向上させることができます。
⇒ 「FileDialogの使用例を紹介」の使用例をご紹介」もう一度見る。
- FileDialogの基本を押さえることで、VBAでのファイル操作がスムーズになり、ユーザーの入力に柔軟に対応できます。
さらに学ぶために
FileDialogの使い方に慣れてきたら、他のVBA機能も活用してみましょう。
ユーザーフォームやイベント処理など、VBAにはさまざまな機能も同等の処理を行うことができます。
これらを学ぶことで、さらに高度な自動化が可能になり、作業の効率化を図ることができます。
まずは、この記事の内容を実践し、FileDialogを使いこなせるようになってください。
次に進むための基礎がしっかりと身につくはずです。
この記事が役に立ったと思った方は、ぜひサイトマップから違う記事もご覧ください。

