« VBAで文字列の中身をダンプする。 | トップページ | 配列をシャッフルする。 »

2008年3月10日 (月)

VBAのDir()関数のワイルドカードは誤動作する。

Dir("*1.txt") のようなワイルドカードを指定すると、"*1.txt" でないファイルも拾います。
これは、Dir()が短いファイル名の~1などを拾うからです。

Dim Filename As String
Filename = Dir("*1.txt")
Do While Len(Filename)
  Debug.Print Filename
  Filename = Dir()
Loop

Dir()の障害のような気がしますが、これは仕様と諦めて、If ~ Like "*1.txt" Then などで二重にチェックするとよいでしょう。

Dim Filename As String
Filename = Dir("*1.txt")
Do While Len(Filename)
  If Filename Like "*1.txt" Then
    Debug.Print Filename
  End If
  Filename = Dir()
Loop

« VBAで文字列の中身をダンプする。 | トップページ | 配列をシャッフルする。 »