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)

・PageSetupオブジェクト ・PrintCommunicationプロパティ ・ヘッダー・フッターのプロパテの設定方法 ・余白の設定方法 ・印刷範囲の設定/クリア:PrintArea ・総ページ数:Pages.Count ・改ページの位置を設定:PageBreak ・最後に
第74回.ファイルを開くダイアログ(GetOpenFilename)
・GetOpenFilenameメソッド ・GetOpenFilenameの使用例 ・GetOpenFilenameの実践例 ・GetOpenFilenameの初期フォルダーの指定 ・GetOpenFilenameの最後に
第75回.名前を付けて保存ダイアログ(GetSaveAsFilename)
・GetSaveAsFilenameメソッド ・GetSaveAsFilenameの使用例 ・GetSaveAsFilenameの実践例 ・GetSaveAsFilenameの初期フォルダーの指定 ・GetSaveAsFilenameの最後に
第76回.ファイルダイアログ(FileDialog)
第77回.組み込みダイアログ(Dialogs,xlDialogPrint)
・Application.Dialogsコレクション ・Application.Dialogオブジェクト ・印刷ダイアログの使用例 ・組み込みダイアログの最後に
第78回.総合練習問題8
・マクロVBA練習問題 ・シンキングタイム ・マクロVBA練習問題解答へ
第79回.ファイル操作Ⅰ(Dir)
・Dir関数 ・Dir関数の使用例 ・Dir関数の実践例 ・Dir関数の制限について ・Dir関数の関連記事
第80回.ファイル操作Ⅰ(その他)
・ファイル操作で使う、ステートメントと関数 ・ファイル操作の使用例 ・ファイル操作の実践例 ・ファイル操作について
第81回.総合練習問題9
・マクロVBA練習問題 ・シンキングタイム ・マクロVBA練習問題解答へ
第82回.RangeのResizeプロパティ
・Resizeプロパティの構文 ・Resizeの使用例 ・Resizeのまとめ
第83回.RangeのOffsetプロパティ
・Offsetプロパティの構文 ・Offsetの使用例 ・Offsetの注意点 ・Offsetのまとめ


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

TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.繰り返し処理(For Next)|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.変数宣言のDimとデータ型|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.ブック・シートの選択(Select,Activate)|VBA入門




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


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


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