Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


71604 / 76732 ←次へ | 前へ→

【9621】Re:これって無理ですか? ディレクトリの...
回答  INA  - 03/12/10(水) 16:01 -

引用なし
パスワード
   ヘルプにそのまま載っていますよ?


Dir 関数
   

指定したパターンやファイル属性と一致するファイルまたはフォルダの名前を表す文字列型 (String) の値を返します。ドライブのボリューム ラベルも取得できます。

構文

Dir[(pathname[, attributes])]

Dir 関数の構文は、次の指定項目から構成されます。

指定項目 内容
pathname 省略可能です。ファイル名を表す文字列式を指定します。フォルダ名およびドライブ名も含めて指定できます。引数 pathname に指定した内容が見つからないときは、長さ 0 の文字列 (" ") を返します。
attributes 省略可能です。取得するファイルが持つ属性の値の合計を表す数式または定数を指定します。省略すると、標準ファイルの属性になります。


設定値

引数 attributes の設定値は次のとおりです。

定数 値 内容
vbNormal 0 標準ファイル
vbReadOnly 1 読み取り専用ファイル
vbHidden 2 隠しファイル
vbSystem 4 システム ファイル。Macintosh では使用できません。
vbVolume 8 ボリューム ラベル。この値を指定すると、すべての属性は無効になります。Macintosh では使用できません。
vbDirectory 16 フォルダ
vbAlias 64 エイリアス ファイル。Macintosh でのみ使用できます。


メモ これらの定数は、Visual Basic で定義されています。したがって、実際の数値の代わりにコードで使用することができます。

解説

Windows の場合、複数のファイルを指定するための "*" (アスタリスク) および "?" (疑問符) のワイルドカード文字を使用できます。Macintosh の場合、これらの文字は有効なファイル名の文字として扱われるため、このワイルドカード文字を使用して複数ファイルを指定することはできません。

また、Macintosh でワイルドカード文字がサポートされていないため、ファイルの種類によって複数のファイルを識別することができません。特定の種類のファイルを指定するには、ファイル名を使用せずに MacID 関数を使用します。例えば、次の例では、最初に見つかった、タイプが TEXT のファイルを返します。

Dir("SomePath", MacID("TEXT"))
フォルダ内のすべてのファイルに対して繰り返して処理を実行する場合は、引数を指定せずにDir を実行してください。

Dir("")
Windows で MacID 関数と Dir 関数を組み合わせて使用した場合はエラーが発生します。

引数 attribute に 256 より大きな値を指定した場合は MacID 関数の値と見なされます。

Dir 関数を最初に呼び出すとき、引数 pathname を指定しないとエラーになります。またファイル属性 (引数 attributes) を指定する場合にも、引数 pathname を指定する必要があります。

Dir 関数は、引数 pathname と一致する最初のファイル名を返します。それ以外のファイル名で引数 pathname と一致するファイル名を取得するには、引数を指定せずに再び Dir 関数を呼び出してください。一致するファイル名がない場合は、Dir 関数は長さ 0 の文字列を返します。長さ 0 の文字列が返された場合は、次に Dir 関数を呼び出すときに引数 pathname を再び指定しなければなりません。指定しないとエラーが発生します。現在の引数 pathname と一致するファイル名をすべて取得していなくても、途中で引数 pathname の指定を変更できます。ただし、Dir 関数を再帰的に呼び出すことはできません。vbDirectory 属性を指定して Dir 関数を続けて呼び出しても、連続する下位レベルのサブフォルダは返しません。

ヒント 取得したファイルを整理する必要があるときには、ファイル名を配列に格納して並べ替え (ソート) を行ってください。


−−−−−−−−−−−−−−−−−−−−−−−−−

Dir 関数の使用例

次の例は、Dir 関数を使って、指定したファイルまたはフォルダがあるかどうかを確認します。Macintosh, の場合、既定のドライブ名は “HD:” で、パスの区切り文字には円記号 ("\") ではなくコロン (":") を使用してフォルダを指定します。また、ワイルドカード文字は、Mac のフォルダ指定では使用できませんが、MacID 関数を使用すると複数のファイルを指定することができます。

Dim MyFile, MyPath, MyName
' "WIN.INI" が存在する場合、そのファイル名を返します(Microsoft Windows の場合)。
MyFile = Dir("C:\WINDOWS\WIN.INI")  

' 指定した拡張子を持つファイル名を返します。複数の *.INI ファイル
' が存在すると、最初に見つかったファイル名を返します。
MyFile = Dir("C:\WINDOWS\*.INI")

' 引数を指定せずに再度 Dir 関数を呼び出すと、
' 同じフォルダにある次の *.INIファイルを返します。
MyFile = Dir

' 隠しファイル属性を持つ *.TXT ファイルであり、最初に見つかったファイル名を返します。
MyFile = Dir("*.TXT", vbHidden)

' C:\ 内のフォルダの名前を表示します。
MyPath = "c:\"  ' パスを設定します。
MyName = Dir(MyPath, vbDirectory)  ' 最初のフォルダ名を返します。
Do While MyName <> ""  ' ループを開始します。
  ' 現在のフォルダと親フォルダは無視します。
  If MyName <> "." And MyName <> ".." Then
    ' ビット単位の比較を行い、MyName がフォルダかどうかを調べます。
    If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
      Debug.Print MyName    ' フォルダであれば、それを表示します。
    End If
  End If
  MyName = Dir          ' 次のフォルダ名を返します。
Loop

1 hits

【9591】これって無理ですか? ディレクトリの指定の手間を除く方法 テーブル 03/12/9(火) 19:13 質問
【9592】Re:これって無理ですか? ディレクトリの指... INA 03/12/9(火) 20:02 回答
【9616】Re:これって無理ですか? ディレクトリの指... テーブル 03/12/10(水) 14:44 質問
【9621】Re:これって無理ですか? ディレクトリの... INA 03/12/10(水) 16:01 回答
【9628】Re:これって無理ですか? ディレクトリの... テーブル 03/12/11(木) 11:19 質問
【9631】Re:これって無理ですか? ディレクトリの... INA 03/12/11(木) 12:35 回答
【9632】Re:これって無理ですか? ディレクトリの... テーブル 03/12/11(木) 13:06 質問
【9639】Re:これって無理ですか? ディレクトリの... INA 03/12/11(木) 14:16 回答
【9658】Re:これって無理ですか? ディレクトリの... テーブル 03/12/12(金) 10:58 質問
【9666】Re:これって無理ですか? ディレクトリの... INA 03/12/12(金) 12:38 回答
【9685】Re:これって無理ですか? ディレクトリの... テーブル 03/12/12(金) 15:44 質問
【9686】Re:これって無理ですか? ディレクトリの... Jaka 03/12/12(金) 16:02 回答
【9688】Re:これって無理ですか? ディレクトリの... テーブル 03/12/12(金) 16:47 質問
【9689】Re:これって無理ですか? ディレクトリの... つん 03/12/12(金) 17:20 発言
【9690】Re:これって無理ですか? ディレクトリの... テーブル 03/12/12(金) 17:27 お礼
【9723】Re:これって無理ですか? ディレクトリの... Jaka 03/12/15(月) 16:41 発言

71604 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free