2022年5月
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 31        
無料ブログはココログ

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