フォルダ内のファイル名を取得する
●詳細● 

 サンプルでは、”Book1.xls”というExcelブックが保存されている
 フォルダ内のブック名をすべて”Book1.xls”のA列に表示します。
 まずは、カレントフォルダを”Book1.xls”のあるフォルダに変更します。
 カレントフォルダ内のExcelブック名をDir関数を使って取得し、
 ”Book1.xls”のA列に表示します。
 ブック名の取得が終了したら、メッセージボックスにカレントフォルダ内に何個の
 ブックがあるか表示します。

●準備● 

 * ”Book1.xls”に標準モジュールを挿入して、サンプルを貼り付けて
  保存してください(閉じないでください。)
 カレントフォルダと”Book1.xls”のフォルダを変えておいてサンプルを
 実行すると、カレントフォルダが”Book1.xls”のフォルダに変更された
 ことが確認できます。

 [ツール]メニューの[オプション][全般]の[カレントフォルダ名]で、カレントフォ
 ルダを変更することができます。

●サンプル● 

Sub sample() 

    Dim myPath As String
    Dim myFName As String
    Dim FCnt As Integer

    '<カレントフォルダを確認します。>
    MsgBox CurDir()←(1) 

    '<Book1をアクティブにしてフォルダ名を取得します。>
    Workbooks("Book1.xls").Activate
    myPath = ActiveWorkbook.Path
    MsgBox myPath 

    '<現在アクティブなブックのフォルダに変更します。>
    ChDir myPath ←(2)

    '<取得ブック数をカウントするための変数を初期化します。>
    FCnt = 0 
    '<カレントフォルダ内の最初のExcelブックを取得します。>
    myFName = Dir("*.xls") ←(3) 

    '<Excelブックが取得できた場合。>
    If myFName <> "" Then 

      '<取得ブック数をカウント>
      FCnt = FCnt + 1 

      '<取得したブック名をA列にセットします。>
      Cells(FCnt, 1).Value = myFName 

      '<1件目以降のブックを取得します。>
      Do ←(4)

        '<次のブックを取得します。>
        myFName = Dir() 

        '<取得できた場合。>
        If myFName <> "" Then 

          '<取得したブック名をA列にセットします。>
          FCnt = FCnt + 1 
          Sheets("Sheet1").Cells(FCnt,1).Value = myFName 
        Else

          '<ブック名の取得が終了したので繰り返し処理を抜けます。>

          Exit Do 
        End If 
      Loop
    End If 
    MsgBox "「" & myPath & "」には、" & FCnt & "個のファイルがあります。"
    
End Sub 

●補足説明● 

(1)「CurDir」関数は、現在のパスを返します。
(2)「ChDir」ステートメントは、現在のフォルダを変更します。
(3)「Dir」関数は、指定したファイル属性と一致するファイル名を返します。

    <構文> 
    Dir[Pathname,Attributes]

   Pathname:省略可能です。ファイル名またはフォルダ名を指定します。
   Attributes:省略可能です。ファイルの属性を定数で指定します。

  (定数) 
   vbNormal 標準ファイル 
   vbHidden 隠しファイル 
   vbSystem システム ファイル 
   vbVolume ボリューム ラベル。 
   この値を指定すると、すべての属性は無効になります。
   vbDirectory フォルダ 

  複数のファイルを指定するための "*"
  (アスタリスク) および "?" (疑問符)のワイルドカード文字を使用できます。

 「Dir」関数は、指定したファイル属性と一致する最初のファイル名を返します。
 それ以外の一致するファイル名を取得するには、引数を指定せずに再び「Dir」
 関数を呼び出します。

(4)「Do〜Loop」ステートメントは、処理を繰り返し実行します。処理から
   抜け出すには、「Exit Do」




戻る


Excel Word Access VBA! モーグ