【Excel VBA】フォルダ内のファイルを扱うDir関数の使い方

当ページのリンクには広告が含まれている可能性があります。
フォルダ内のファイルを扱うDir関数の使い方

こんにちは、ユーキです。

今回は、フォルダ内のファイルを扱うDir関数の使い方を紹介します。

目次

フォルダ内のファイルを取得する関数

Dir関数はフォルダ内のファイルを取得する際に使用します。指定したパターンに一致するファイルだけを取得することも可能です。

Dir関数の使い方

Dir関数は指定したフォルダ内で最初にヒットしたファイル名を返す関数です。対象ファイルが複数ある場合、Dir関数を再度呼び出しすると、次のファイル名を取得できます。

指定フォルダのファイルの一覧を取得した場合には、以下のようなループ文でファイル名を取り出すようにします。

    Dim fileName As String

    fileName = Dir("C:\Temp\")
    
    Do While fileName <> ""
        Debug.Print "DIR=" & fileName
                
        '次のファイル
        fileName = Dir()
    Loop

特定のファイルだけ取得する

第1引数でファイル名に当たる部分を「*.txt」のようにすると、拡張子がtxtのファイルのみが取得できます。

    Dim fileName As String

    fileName = Dir("C:\Temp\*.txt")
    
    Do While fileName <> ""
        Debug.Print "DIR=" & fileName
                
        '次のファイル
        fileName = Dir()
    Loop

「*」がワイルドカードになるので、「*売上報告*」のように、部分一致の指定を行うことも可能です。

特殊ファイルやフォルダを取得する

フォルダを指定する場合は、第2引数にvbDirectory(8)指定します。

    Dim fileName As String

    'フォルダとファイルを取得
    fileName = Dir("C:\Temp\", vbDirectory)
    
    Do While fileName <> ""
        Debug.Print "DIR=" & fileName
                
        '次のファイル
        fileName = Dir()
    Loop

指定できるのは以下の値になります。

スクロールできます
定数説明
vbNormal0(既定値) 属性のないファイル。
省略した場合、この値が設定されます。通常のファイルを取得します。
vbReadOnly1属性のないファイルと読み取り専用のファイル。
vbHidden2属性のないファイルと隠しファイル。
vbSystem4属性のないファイルとシステム ファイル。 Macintosh では使用できません。
vbVolume8ボリューム ラベル。他の属性を指定した場合は、vbVolume は無視されます。 Macintosh では使用できません。
vbDirectory16属性のないファイルとディレクトリまたはフォルダー。
vbAlias64指定されたファイル名はエイリアスです。 Macintosh でのみ使用できます。
DIR関数の第2引数で指定可能な値

隠しファイルとフォルダを含めて取得したい場合は、以下のように指定をします。設定はいくつでも可能です。

fileName = Dir("C:\Temp\", vbHidden + vbDirectory)

まとめ

今回は、Dir関数について述べました。FileSystemObjectが使えるのであれば、あまり使う機会はないかもしれません。

ただ、FileSystemObjectが使えない場合には役に立つので、覚えておいて損はない関数になります。

Point
  • Dir関数は指定したフォルダで最初にヒットした1件目のファイル名を返す
  • パスを決めて読み込んだあとは、Dir()で指定フォルダのファイルが取得できる
  • 第2引数を指定することで、特殊ファイルやフォルダを取得することも可能

少しでもお役に立てば、幸いです。

スポンサーリンク
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

旅好き職業プログラマ。文系大学卒業後、ITソフトウエア開発会社に勤務してプログラミング言語を学ぶ。現在は転職し、プロジェクトマネージャ的ポジションで生産管理システムの開発にあたる。
得意言語は、VB、VB.NET、C#.NET、Java、SQLなど。

目次