【コード】ファイル選択ダイアログボックスの工夫

VBAには、組み込みのダイアログボックスがあります。

これを活用すると、ファイルやフォルダの選択が簡単になります。ユーザーの意思をマクロで取り込めるので、マクロの使い勝手がよくなります。

ファイルを選択する組み込みダイアログボックスで一つ気をつけたことがあるので、その点を紹介します。

このマクロでできること

ファイル選択ダイアログで絞り込んだファイルの種類を解除します。

マクロの解説

組み込みのダイアログボックスを使って、ファイルを選択します。

このとき、14行目39行目でダイアログボックスのタイトルを変更できます。

また、16行目~19行目で表示するファイルの種類を限定できます。

以下のようにWordファイルのみを表示できます。

ファイル選択

ただ、ひとつ気をつける必要があります。

ここでファイルの種類を限定すると、次に別のマクロでファイル選択ダイアログボックスを開いたときに、この限定した設定が残ってしまっています。

そのため、Excelファイルを開きたいのに、Wordファイルしか表示されていないという事態に陥ります。

そこで、次のマクロでどのファイルでも選択できるよう、限定条件を解除します。それが23行目25行目です。

解除後は、以下のように全てのファイルが表示されます。

ファイル選択

マクロ


Sub ファイル選択ダイアログのファイル設定()

 Dim myFilePath As String ' Wordファイルパス
 Dim myFD As FileDialog
 
 Set myFD = Application.FileDialog(msoFileDialogFilePicker)

 '------------------------------------------------
 'Wordファイルの選択
 '------------------------------------------------
 With myFD
  
  .AllowMultiSelect = False
  .Title = "Wordファイルを選択してください"
  
  With .Filters
   .Clear
   .Add "すべてのWordファイル", "*.doc; *.docx"
  End With
 
  If .Show = -1 Then
   myFilePath = .SelectedItems(1)
   .Filters.Clear
  Else
   .Filters.Clear
   Exit Sub
  End If
  
 End With
 
 MsgBox myFilePath
 
 '------------------------------------------------
 '任意のファイルの選択
 '------------------------------------------------
  With myFD
 
  .AllowMultiSelect = False
  .Title = "ファイルを選択してください"
 
  If .Show = -1 Then
   myFilePath = .SelectedItems(1)
  Else
   Exit Sub
  End If
 
 End With
 
 MsgBox myFilePath
 
End Sub

関連記事

選択したファイルの「ファイルパス」と「フォルダパス」をゲット

トップへ戻る