VBA入門
ファイルダイアログ(FileDialog)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
公開日:2013年5月以前 最終更新日:2022-04-01

第76回.ファイルダイアログ(FileDialog)


VBAでファイルを指定するダイアログを扱うには、
すでに紹介したGetOpenFilenameGetSaveAsFilenameがありますが、
さらに今回紹介する、
FileDialogオブジェクト
こちらも使用することができ、GetOpenFilenameやGetSaveAsFilenameにはない便利な機能が提供されています。



FileDialogオブジェクト

Application.FileDialog(fileDialogType)

fileDialogTypeに使用する定数
msoFileDialogFilePicker ユーザーがファイルを選択できます。
msoFileDialogFolderPicker ユーザーがフォルダーを選択できます。
msoFileDialogOpen ユーザーがファイルを開くことができます。
msoFileDialogSaveAs ユーザーがファイルを保存できます。

このFileDialogは、
GetOpenFilenameやGetSaveAsFilenameと、だいぶ使い方が違います。

FileDialogはApplication内のオブジェクトです。
使用する場合は、親オブジェクトであるApplicationの指定が必要です。
オブジェクトなので、メンバーであるプロパティ、メソッドが存在します。

FileDialogオブジェクトには、多くのプロパティ、メソッドが用意されています。
これらを使用して、各種機能を実現します。

FileDialogオブジェクトのプロパティ、メソッド

名前 説明
メソッド Execute Show メソッドが呼び出された直後のユーザーのアクションを実行します。
Show ファイルのダイアログ ボックスを表示し、[アクション] ボタン (-1) と [キャンセル] ボタン (0) のどちらがクリックされたかを示す長整数型 (Long) の値を返します。
Show メソッドを呼び出すと、ファイルのダイアログ ボックスが閉じられるまで、コードの実行は中断されます。
[ファイルを開く] および [名前を付けて保存] ダイアログ ボックスでは、Show メソッドの直後に Execute メソッドを使用して、ユーザーのアクションを実行します。
プロパティ AllowMultiSelect True を設定すると、ユーザーは、ダイアログ ボックスから複数のファイルを選択できます。
値の取得および設定が可能です。
Application 指定した FileDialog オブジェクトのコンテナー アプリケーションを表す Application オブジェクトを取得します。
このプロパティを Automation オブジェクトと組み合わせて使用すると、そのオブジェクトのコンテナー アプリケーションを取得できます。
値の取得のみ可能です。
ButtonName ファイルのダイアログボックスで、アクションボタンに表示されるテキストを表す文字列型 (String) の値を設定します。
値の取得および設定が可能です。
Creator FileDialog オブジェクトが作成されたアプリケーションを示す 32 ビットの整数を取得します。
値の取得のみ可能です。
DialogType FileDialog オブジェクトが表示するファイルのダイアログ ボックスの種類を表す MsoFileDialogType クラスの定数を取得します。
値の取得のみ可能です。
FilterIndex ファイルのダイアログ ボックスの既定ファイル フィルターを設定します。
長整数型 (Long) の値を使用します。
既定フィルターによって、ファイルのダイアログ ボックスを初めて開いたときに表示されるファイルの種類が決まります。
値の取得および設定が可能です。
Filters FileDialogFilters コレクションを取得します。
値の取得のみ可能です。
InitialFileName ファイルのダイアログ ボックスに初期表示されるパスやファイル名を設定します。
文字列型 (String) の値を使用します。
値の取得および設定が可能です。
InitialView ファイルのダイアログ ボックスでのファイルやフォルダーの初期表示を表すMsoFileDialogViewクラスの定数を設定します。
値の取得および設定が可能です。
Item 指定したオブジェクトに関連付けられたテキストを取得します。
値の取得のみ可能です。
Parent FileDialog オブジェクトの Parent オブジェクトを取得します。
値の取得のみ可能です。
SelectedItems FileDialogSelectedItems コレクションを取得します。
このコレクションには、FileDialog オブジェクトの Show メソッドによって表示されたファイルのダイアログ ボックスでユーザーが選択したファイルのパスの一覧が保存されています。
値の取得のみ可能です。
Title FileDialog オブジェクトを使用して表示されるファイルのダイアログ ボックスのタイトルを取得または設定します。
値の取得および設定が可能です。

いろいろな使い方があり、なかなか全てを紹介しきれませんが、
以下に、いくつかの実践例を掲載します。


FileDialogの実践例

Sub sample1()
  With Application.FileDialog(msoFileDialogFolderPicker)
    .InitialFileName = "D:\user\"
    .AllowMultiSelect = False

    .Title = "フォルダの選択"
    If .Show = True Then
      MsgBox "選択フォルダは" & vbLf & .SelectedItems(1)
    End If
  End With
End Sub

フォルダの選択ダイアログを表示し、選択されたフォルダをMsgBoxで表示しています。
初期フォルダも指定しています。


Sub sample2()
  With Application.FileDialog(msoFileDialogOpen)
    .Filters.Clear
    .Filters.Add "Excel2003", "*.xls"
    .Filters.Add "Excelファイル", "*.xlsx"
    .Filters.Add "Excelマクロ有効", "*.xlsm"
    .InitialFileName = "D:\Excel\"
    .AllowMultiSelect = False
    If .Show = True Then
      .Execute
    End If
  End With
End Sub

ファイル選択のダイアログを、拡張子(xls,xlsx,xlsm)で表示し、
選択されたファイルを、Executeで開いています。


FileDialogの最後に

VBAでの自動化にあたっては、極力ダイアログを使用せずに、
VBAで自動的に、フォルダ、ファイルを特定できるように決め事を作っておくことが望ましいです。

そのような決め事を作れない場合の手段として、ダイアログを使うことになると思います。




同じテーマ「マクロVBA入門」の記事

第73回.ページ設定(PageSetup,PageBreak)
第74回.ファイルを開くダイアログ(GetOpenFilename)
第75回.名前を付けて保存ダイアログ(GetSaveAsFilename)
第76回.ファイルダイアログ(FileDialog)
第77回.組み込みダイアログ(Dialogs,xlDialogPrint)
第78回.総合練習問題8
第79回.ファイル操作Ⅰ(Dir)
第80回.ファイル操作Ⅰ(その他)
第81回.総合練習問題9
第82回.RangeのResizeプロパティ
第83回.RangeのOffsetプロパティ


新着記事NEW ・・・新着記事一覧を見る

第5章:AI×VBAでつまづかない!トラブルシューティングとAIとの付き合い方 |生成AI活用研究(2025-05-20)
第4章:【事例で学ぶ】AIとVBAでExcel作業を劇的に効率化する! |生成AI活用研究(2025-05-20)
第3章:AIを「自分だけのVBA先生」にする!質問・相談の超実践テクニック|生成AI活用研究(2025-05-19)
第2章 VBAって怖くない!Excelを「言葉で動かす」(超入門)|生成AI活用研究(2025-05-18)
第1章:AIって一体何?あなたのExcel作業をどう変える?(AI超基本)|生成AI活用研究(2025-05-18)
AI時代のExcel革命:AI×VBAで“書かない自動化”超入門|生成AI活用研究(2025-05-17)
Geminiと100本ノック 23本目:シート構成の一致確認|生成AI活用研究(5月16日)
AIが問う出版の未来は淘汰か進化か:AIと書籍の共存の道とは|生成AI活用研究(2025-05-16)
Geminiと100本ノック 22本目:FizzBuzz発展問題|生成AI活用研究(5月15日)
すぐに使える!生成AI プロンプト作成 実践ガイド|生成AI活用研究(2025-05-15)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.繰り返し処理(For Next)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.ひらがな⇔カタカナの変換|エクセル基本操作
6.RangeとCellsの使い方|VBA入門
7.メッセージボックス(MsgBox関数)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.FILTER関数(範囲をフィルター処理)|エクセル入門
10.条件分岐(Select Case)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ