第79回.ファイル操作Ⅰ(Dir)
VBAでは、フォルダのファイル一覧を取得したりファイルの存在確認をする事が出来ます、
Dir関数は、指定したパターン(ワイルドカード)やファイル属性と一致するファイルまたはフォルダの名前を表す文字列の値を返します。
引数に指定したファイルが存在するとそのファイル名を返し、存在しないと空欄を返します。
Dir関数
pathname | 省略可能です。 ファイル名を表す文字列式を指定します。 フォルダ名およびドライブ名も含めて指定できます。 引数 pathname に指定した内容が見つからないときは、長さ 0 の文字列 (" ") を返します。 "*"または"?" のワイルドカードを使用できます。 |
attributes | 省略可能です。 取得するファイルが持つ属性の値の合計を表す数式または定数を指定します。 省略すると、標準ファイルの属性になります。 |
attributesの設定値
定数 | 値 | 内容 |
vbNormal | 0 | 標準ファイル |
vbReadOnly | 1 | 読み取り専用ファイル |
vbHidden | 2 | 隠しファイル |
vbSystem | 4 | システム ファイル。 Macintosh では使用できません。 |
vbVolume | 8 | ボリューム ラベル。この値を指定すると、すべての属性は無効になります。 Macintosh では使用できません。 |
vbDirectory | 16 | フォルダ |
vbAlias | 32 | エイリアス ファイル。 Macintosh でのみ使用できます。 |
この値はビット演算に対応するように作成されています。
10進 | 2進 |
0 | 00000000 |
1 | 00000001 |
2 | 00000010 |
4 | 00000100 |
8 | 00001000 |
16 | 00010000 |
32 | 00100000 |
64 | 01000000 |
任意の複数の値を足し算した値は、他の組み合わせと同一になることはありません。
したがって任意の組み合わせを、上記設定値の足し算で指定することが可能となっています。
この場合の足し算は論理演算のOrと同等です。
一致するファイル名がなくなると、Dir関数は長さ0の文字列 ("") を返します。
ただし、vbDirectory属性を付けてDirを呼び出しても、継続してサブディレクトリが返されることはありません。
Dir関数の使用例
Dir関数の実践例
変数 = Dir("C:\*.xls")
Do While 変数 <> ""
・・・
変数 =
Dir()
Loop
Cドライブ直下のエクセルファイルを全て取得しています。
注意
xlsで始まる拡張子全てが対象となります。
strDir = Dir(パス, vbDirectory)
Do While strDir <> ""
If strDir <> "." And strDir <> ".." Then
If GetAttr(パス & strDir) And vbDirectory Then
Debug.Print strDir 'strDirはフォルダです
End If
End If
strDir = Dir()
Loop
このVBAの解説については以下のページをお読みください。
Dir関数の制限について
・256バイトを超えるパス名が扱えない
・環境依存文字が扱えない
・特殊なネットワークドライブでエラー
等々の多くの制限があります。
Dir関数の制限について
Dir関数の関連記事
ファイル一覧を取得する(Do~LoopとDir関数)
同じテーマ「マクロVBA入門」の記事
第80回.ファイル操作Ⅰ(その他)
新着記事NEW ・・・新着記事一覧を見る
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。