ExcelでVBAのDIR関数を使う方法(7つの実践例)

  • これを共有
Hugh West

があります。 ディレクション での機能 ブイビーエー この関数は,特定のファイルやフォルダを取得するために多くの用途があります。 必要なのは,ファイルパスを ブイビーエー のコードを使用するのは厳しいと思われます。 ブイビーエー ディレクション コードを使用するための、より良い視覚化のための例をいくつか紹介します。 ブイビーエー ディレクション この記事を読んで、この関数を使えるようになることを願っています。 では、さっそく始めましょう。

練習用ワークブックをダウンロードする

以下の練習用ワークブックをダウンロードしてください。 より深く理解することができます。

DIR関数.xlsm

DIR関数の紹介

概要

があります。 ブイビーエー ディレクション 関数は,与えられたフォルダパスからファイルまたはディレクトリの名前を返します. 通常は,最初のファイルを返します.

構文です。

Dir [ (パス名, [ 属性 ] ) ]。

引数説明。

論証 必須/オプション 説明
パス名 オプション パス をアクセスするために、ファイル
属性 オプション 定数または数値表現 一致するファイルの属性を指定する

いくつかの属性があらかじめ設定されています。

アトリビュート名 商品説明
vbNormal 特定の属性のないファイル
vbReadOnly 属性のない読み取り専用ファイル
vbHidden 属性のない隠しファイル
ブブシステム 属性のないシステムファイル
vbVolume ボリュームラベル
vbDirectory 属性のないディレクトリやフォルダー
vbAlias 指定されたファイル名がエイリアスである

VBAのDIR関数をExcelで使用する7つの例

という説明から、理解されたかもしれません。 VBA DIR は,指定されたパス名からファイル名を生成します。 例として,この機能を理解しましょう。 Exceldemy_Folder このフォルダの中に、さまざまな小さなフォルダとファイルがあります。

1.パスからファイル名を探す

フォルダ内で、ファイル名のパスを宣言することで、特定のファイルを見つけることができます。

ファイルのパスをコピーした後、コードを実行する必要があります。

このため、次の場所に行ってください。 デベロッパー タブ>> ピック ビジュアルベーシック 次に、次のページに進みます。 インサート タブ>> 選択 モジュールです。 での 一般 ダイアログボックスに、コードを記述します。

私たちの課題は、それを見つけることなので ファイル名 というパス名から、フルパス名(ルートからファイルまで)を設定することになります。

 Sub FileNames() Dim FN As String FN = Dir("E:\ExceldemyThailandSales_of_January.xlsx") MsgBox FN End Sub 

このコードでは、パス名を E:\ExceldemySales_of_January.xlsx

コードのブレークダウン

  • という文字列変数を最初に宣言しています。 エフエヌ .そして、その出力は ディレクション 関数がこの変数に保存されました。
  • 次に ディレクション 関数は,与えられたパスからファイル名を見つけ,それを返します。
  • では、その MsgBox は、メッセージボックスからの出力を設定します。 MsgBox は、メッセージボックスによる出力を返す。
  • そして、コードを実行する際に F5 キーになります。

最終的に、次のような名前のファイルが見つかりました。 1月度売上高.xlsx .

2.ディレクトリの存在確認

ディレクトリの存在を確認するためには ディレクション をチェックするコードを書いてみましょう。 Exceldemy フォルダが存在します。 一般的なボックスに以下のコードを書き込んで実行します。 F5 キーになります。

 Sub CheckFile() Dim PN As String Dim File As String PN = "E:\Exceldemy" File = Dir(PN, vbDirectory) If File "" Then MsgBox File & " exists" Else MsgBox "The file doesn't exist" End If End Sub. 

コードのブレークダウン

  • 2つの変数を宣言しています。 ピーエヌ には、チェックするディレクトリのフルパスが含まれています。
  • この中で ディレクション 関数で、パス名と属性値の2つの値を設定しています。 vbDirectory この属性値によって,ディレクトリを検出することができます。 また,この関数の出力は ファイル の変数になります。
  • そして、その変数が空かどうかを確認し、空でないことがわかったら、メッセージボックスでディレクトリの存在を宣言し、そうでなければ、リターンは存在しないことになります。

ここでは Exceldemy ディレクトリが存在するので、" Exceldemyが存在する ", ここで Exceldemy はフォルダの名前です。

3.存在しないフォルダーを作成する

PC上に存在しないフォルダを作成することができます。 そのためには、フォルダ内に存在しないパス名を作成する必要があります。 ここでは、次のようなディレクトリを作成することを想像してみましょう。 Exceldemy_1 .を使用することになります。 エムケーディール コマンドでディレクトリを作成しますが、その前に、次のように記述します。 ブイビーエー のコードになります。

 Sub CheckFile() Dim PN As String Dim File As String PN = "E:\Exceldemy_1" File = Dir(PN, vbDirectory) If File "" Then MsgBox File & " File folder exists" Else MkDir PN MsgBox "A file folder has been created with the name" & File End If End Sub. 

のパス名を使って、ディレクトリを作成するコマンドを記述しています。 エルゼ ブロックを作成しました。 実行 というコードがあります。 F5 キーになります。

ディレクトリが作成されました。 ディレクトリフォルダを見てみましょう。 Exceldemy_1 フォルダーがコンピュータ上に表示されるようになりました。

類似の読み物。

  • ExcelのVBAでSubを呼び出す方法(4例)
  • VBA関数で値を返す(配列と非配列の両方の値)
  • ExcelでVBAのUCASE関数を使う(4例)
  • ExcelのVBAでTRIM関数を使う方法(定義+VBAコード)

4.ディレクトリから最初のファイルを探す

の最重要課題です。 ディレクション 関数は、与えられたディレクトリから最初のファイルを見つけるものです。 関数内で提供する必要があるのはパス名(コンテナディレクトリまで)だけで、そのディレクトリから一番最初のファイルを返します。

の中から最初のファイルを探してみましょう。 Exceldemy ディレクトリに格納されます。 私たちのコードは

 Sub FirstFileinFolder() Dim FN As String Dim PN As String PN = "E:♪Exceldemy ♪" FN = Dir(PN) MsgBox "最初のファイル: " & FN End Sub 

基本的なコードはご覧の通りです。パス名を ディレクション 機能です。 実行 というコードがあります。 F5 キーを押すと、このディレクトリにある最初のファイルが表示されます。

5.ディレクトリからすべてのファイルを検索する

前節では,あるディレクトリにある最初のファイル名を見つける方法を示しましたが,特定のディレクトリにあるすべてのファイルを見つける必要がある場合があります. 特定のディレクトリにあるすべてのファイルを見つけるには,次のように記述します. ブイビーエー のコードで表示されます。

 Sub AllFile() Dim FN As String Dim FL As String FN = Dir("E:♪Exceldemy ♪") Do While FN "" FL = FL & vbNewLine & FN FN = Dir() Loop MsgBox ("File List:" & FL) End Sub. 

ここでは、ファイル名を1つの変数として格納するための2つの変数( エフエヌ )、そしてリストとして( かんすうライブラリ ) があります。 Do While ループはディレクトリにファイルがなくなるまで繰り返し、このループを使って、すべてのファイル名を かんすうライブラリ の変数になります。

このコードを実行すると、下の画像のように、ディレクトリ内のすべてのファイルが表示されます。

6.ディレクトリからすべてのファイルやフォルダーを検索する

前項ですべてのファイルを探す方法を説明しましたが、フォルダー内のすべてのサブフォルダーを探すこともできます。 これを行うには、次のように記述します。 ブイビーエー のコードを以下に添付します。

 Sub AllFileFolders() Dim AN As String Dim Lst As String AN = Dir("E:\Exceldemy_Folder", vbDirectory) Do While AN "" Lst = Lst & vbNewLine & AN AN = Dir() Loop MsgBox ("File Lst:" & Lst) End Sub. 

今回のコードでは、属性パラメータを使用するだけです。 vbDirectory その分野では 実行 のすべてのファイルとサブフォルダを見つけることができます。 Exceldemy_Folder .

7.特定の種類のファイルをすべて検索する

を使用しています。 VBA Dir では,どのような種類のファイルも見つけることができるのか,例を挙げて説明します。

を探すことになります。 .csv のようなコードになります。

 Sub SpecialTypeFiles() Dim FL As String Dim FN As String FN = Dir("E:\Exceldemy_Folder*.csv") Do While FN "" FL = FL & vbNewLine & FN FN = Dir() Loop MsgBox ("List of .csv Files:" & FL) End Sub 

同様の仕組みでファイルを探すコード、ご理解いただけましたでしょうか。 パス名には、ワイルドカード( * ) このアスタリスク (*) は、数字までの任意の文字が使用できることを示します。 ワイルドカードは、ファイル名が何でも良いが、必ず .csv ファイルを作成します。

このコードを実行すると、そのコードは .csv のファイルを、私たちの Exceldemy ディレクトリに保存されます。

プラクティス部門

右側の各シートに練習用のコーナーを設けました。 是非、各自で行ってください。

結論

今日のセッションは以上です。 また、これらは簡単な例ですが VBA Dir 関数をExcelで実行します。 ご質問やご意見がありましたら、コメント欄でお知らせください。 より理解を深めるために、練習用シートをダウンロードしてください。 ホームページをご覧ください。 Exceldemy 本記事をお読みいただき、ありがとうございました。

Hugh West は、業界で 10 年以上の経験を持つ、非常に経験豊富な Excel トレーナー兼アナリストです。彼は会計と財務の学士号と経営管理の修士号を取得しています。ヒューは教えることに情熱を持っており、理解しやすい独自の教育アプローチを開発しました。彼の Excel に関する専門知識は、世界中の何千人もの学生や専門家がスキルを向上させ、キャリアで優れた成果を上げるのに役立ってきました。 Hugh はブログを通じて知識を世界に共有し、個人や企業が潜在能力を最大限に発揮できるよう無料の Excel チュートリアルとオンライン トレーニングを提供しています。