ExcelマクロVBA入門
第79回.ファイル操作Ⅰ(Dir)

Excelマクロの基礎と応用、エクセルVBAの入門・初級・初心者向け解説
最終更新日:2018-01-31

第79回.ファイル操作Ⅰ(Dir)


VBAでは、フォルダのファイル一覧を取得したり、ファイルの存在確認をする事が出来ます、


指定したパターンやファイル属性と一致するファイルまたはフォルダの名前を表す文字列の値を返します。

Dir関数は、引数に指定したファイルが存在すると、そのファイル名を返し、存在しないと空欄を返します。



Dir関数

Dir[(pathname[, attributes])]

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

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

複数のファイルを指定するための "*" または "?" のワイルドカードを使用できます。

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



使用例

変数 = Dir("C:\test.xls")
"C:\test.xls"が存在する場合は"test.xls"が、存在しない場合は""が変数に入ります。

変数 = Dir("C:\*.xls")
Cドライブ直下にある、.xlsファイルの先頭のファイル名が入ります。

変数 = Dir("C:\", vbNormal + vbReadOnly + vbHidden)
Cドライブ直下にある、.標準+読取専用+隠しファイルの先頭のファイル名が入ります。



実践例

変数 = Dir("C:\*.xls")
Do While 変数 <> ""
  ・・・
  変数 = Dir()
Loop

Cドライブ直下のエクセルファイルを全て取得しています。

注意
拡張子を、.xlsと指定していますが、この場合は、.xls、.xlsx、.xlsm

これら全てが対象となります。



Dir関数の制限について

Dir関数には、いくつかの制限があります。

・3桁拡張子の指定時の問題
・256バイトを超えるパス名が扱えない
・特殊なネットワークドライブでエラー

これらの問題にたいする詳細な解説は、以下を参照してください。

Dir関数の制限について



Dir関連記事

以下の記事も参考にしてください。

ファイル一覧を取得する(Do~LoopとDir関数)
マクロVBAで他のブック(ファイル)を扱う時、まず問題となるのがファイル名です、ファイル数が常に同じでファイル名も変化しなければ良いのですが・・・ファイル数もファイル名も決まっていない場合は、まずはファイルの一覧を取得する必要があります。ファイル名を取得するには、Dir関数を使います。

Dir関数で全サブフォルダの全ファイルを取得





同じテーマ「マクロVBA入門」の記事

ファイルダイアログ(FileDialog)
組み込みダイアログ(Dialogs,xlDialogPrint)
総合練習問題8
ファイル操作Ⅰ(Dir)
ファイル操作Ⅰ(その他)
総合練習問題9
Rangeのプロパティ(Resize)
Rangeのプロパティ(Offset)
Rangeのプロパティ(Address)
結合セルの扱い
総合練習問題10

新着記事NEW ・・・新着記事一覧を見る

Withステートメントの実行速度と注意点|VBA技術解説(6月6日)
VBA+SeleniumBasicで検索順位チェッカー(改)|VBA技術解説(6月2日)
マクロでShift_JIS文字コードか判定する|VBA技術解説(6月1日)
Shift_JISのテキストファイルをUTF-8に一括変換|VBAサンプル集(5月31日)
「VBAによる解析シリーズその2 カッコ」をやってみた|エクセル(5月21日)
VBA+SeleniumBasicで検索順位チェッカー作成|VBA技術解説(5月18日)
テーブル操作のVBAコード(ListObject)|VBA入門(5月12日)
テーブル操作の概要(ListObject)|VBA入門(5月12日)
VBAのスクレイピングを簡単楽にしてくれるSelenium|VBA技術解説(5月6日)
Excelワークシート関数一覧(2010以降)|VBAリファレンス(4月22日)

アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|ExcelマクロVBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数とデータ型(Dim)|ExcelマクロVBA入門
6.ひらがな⇔カタカナの変換|エクセル基本操作
7.繰り返し処理(For Next)|ExcelマクロVBA入門
8.マクロって何?VBAって何?|ExcelマクロVBA入門
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
10.ExcelマクロVBAの基礎を学習する方法|エクセルの神髄



  • >
  • >
  • >
  • ファイル操作Ⅰ(Dir)

    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。






    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。

    本文下部へ