2017年9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
無料ブログはココログ

« 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で文字列の中身をダンプする。 | トップページ | 配列をシャッフルする。 »