2008年10月18日土曜日

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

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

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

ソース。
Private Sub CommandButton1_Click()

Dim fileName As String
Dim index As Integer

fileName = Dir(ThisWorkbook.Path + "\\*", vbNormal)

index = 1
Do While (fileName <> "")
ThisWorkbook.Worksheets(1).Cells(index, 1).Value = fileName

fileName = Dir()
index = index + 1
Loop

End Sub

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

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


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