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

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
最終更新日:2019-07-07

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


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


FileDialogオブジェクト

Application.FileDialog(fileDialogType)

以下は、
fileDialogTypeに使用する定数です。



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

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

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

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:\user"
    .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 ・・・新着記事一覧を見る

ユーザーに絶対に停止させたくない場合のVBA設定|VBA技術解説(4月1日)
CharactersプロパティとCharactersオブジェクト|VBA技術解説(3月31日)
指数近似/対数近似/累乗近似(掲載順位とCTR)|エクセル関数超技(3月31日)
練習問題32(連続数値部分を取り出し記号で連結)|VBA練習問題(3月24日)
連続数値部分を取り出し記号で連結|エクセル関数超技(3月24日)
数式バーの高さを数式の行数で自動設定|VBAサンプル集(3月21日)
LET関数(数式で変数を使う)|エクセル入門(3月21日)
スピルに対応したXSPLITユーザー定義関数(文字区切り)|VBAサンプル集(3月15日)
XMATCH関数(範囲から値を検索し一致する相対位置)|エクセル入門(3月14日)
XLOOKUP関数(範囲を検索し一致する対応項目を返す)|エクセル入門(3月14日)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.マクロって何?VBAって何?|VBA入門
5.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
6.変数宣言のDimとデータ型|VBA入門
7.ひらがな⇔カタカナの変換|エクセル基本操作
8.繰り返し処理(For Next)|VBA入門
9.徹底解説(VLOOKUP,MATCH,INDEX,OFFSET)|エクセル関数超技
10.セルに文字を入れるとは(Range,Value)|VBA入門




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


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



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