IBM Lotus Symphony
|
指定した検索パスに一致する 1 つのファイル、1 つのディレクトリ、またはドライブ上かディレクトリ内にあるすべてのファイルとディレクトリの名前を返します。
Dir [(Text As String) [, Attrib As Integer]]
String
Text: 検索パス、ディレクトリ、またはファイルを指定する任意の文字列式。この引数は、Dir 関数を最初に呼び出すときにのみ指定できます。必要であれば、パスを URL 表記で入力することもできます。
Attrib: ビット単位のファイル属性を指定する任意の整数表式。Dir 関数は、指定された属性に一致するファイルまたはディレクトリだけを返します。属性値を加算することにより、複数の属性を組み合わせることができます。
0 : 通常のファイル。
16 : ディレクトリ名のみを返します。
この属性を使用して、ファイルまたはディレクトリが存在するかどうかを調べたり、特定のディレクトリ内にあるすべてのファイルとフォルダを判別したりできます。
ファイルが存在するかどうかを調べるには、ファイルの完全なパスと名前を入力します。そのファイル名またはディレクトリ名が存在しない場合、Dir 関数は長さゼロの文字列 ("") を返します。
特定のディレクトリにある既存のすべてのファイルのリストを生成するには、以下のようにします。まず、Dir を最初に呼び出すときは、ファイルの完全な検索パスを指定します。例えば、D:¥Files¥*.sxw などとします。パスが正しく、検索で 1 つ以上のファイルが検出された場合、Dir 関数は検索パスに最初に一致したファイルの名前を返します。パスに一致するその他のファイル名を返させるには、Dir を引数なしで再度呼び出します。
ディレクトリのみが戻るようにするには、属性パラメータを使用します。ボリューム (ハードディスクのパーティションなど) の名前を判別する場合も、同じようにします。
Sub ExampleDir
REM ファイルとディレクトリをすべて表示
Dim sPath As String
Dim sDir as String, sValue as String
sDir="Directories:"
sPath = CurDir
sValue = Dir$(sPath + getPathSeparator + "*",16)
Do
If sValue <> "." and sValue <> ".." 条件を満たすとき
if (GetAttr( sPath + getPathSeparator + sValue) AND 16) >0 then
REM ディレクトリを取得
sDir = sDir & chr(13) & sValue
End If
End If
sValue = Dir$
Loop Until sValue = ""
MsgBox sDir,0,sPath
End sub