2008年10月18日土曜日

VB/VBAで指定ディレクトリ内のファイルを検索する

VBAで指定したディレクトリ内のファイルを検索する方法です。

下の例はExcel用。
Excelファイルと同じフォルダにあるファイル名を並べるサンプルです。

ソース。
  1. Private Sub CommandButton1_Click()  
  2.   
  3. Dim fileName As String  
  4. Dim index As Integer  
  5.   
  6. fileName = Dir(ThisWorkbook.Path + "\\*", vbNormal)  
  7.   
  8. index = 1  
  9. Do While (fileName <> "")  
  10. ThisWorkbook.Worksheets(1).Cells(index, 1).Value = fileName  
  11.   
  12. fileName = Dir()  
  13. index = index + 1  
  14. Loop  
  15.   
  16. End Sub  

ファイルの検索にはDirコマンドというのを使います。

はじめの1回目はファイル名とパスを指定して、2回目以降は指定せずに回します。
vbNormalというのはディレクトリ(フォルダ)以外のファイル。
他に以下の指定が可能です。詳細はヘルプに乗ってますよ。
  • 「vbReadOnly」読み取り専用ファイル 。
  • 「vbHidden」隠しファイル 。
  • 「vbSystem」システム ファイル。Windowsのみ。
  • 「vbVolume」システムファイルも含めたすべてのファイル。Windowsのみ。
  • 「vbDirectory」フォルダ 。
  • 「vbAlias」エイリアス ファイル。Macintoshのみ。


ま、全部使ってみたわけではないのですが。