2016-12-20 7 views
2

まず、自分のコードの定義を説明し、次に問題を定義し、最後に現在のコードを表示します。特定のフォルダに特定のファイル名を持つファイルをカウントする

定義:

私は特定/定義された名前でフォルダ内の特定/定義された名前を持つファイルの数をカウントするループした関数を作成しようとしています。

列AEは、フォルダパス(「フォルダ」)を定義します。 列AHはファイル名( "ExcelFN")を定義します。

セルAI1は、この関数がループする行数(AI1 = "x")を定義します。

定義されたフォルダ内に定義されたFileName(FileName =セル "AH &")がいくつあるかを(1)サイクル数×(2)カウントすると、FolderPath = cell "AE (3)ファイル「AI &」にファイル数を配置し、最後に(4)次の行「i」に移動して前のステップを繰り返す。

問題:

私の問題は、私のコードは、すべての道AIダウン...など、1、2、3、4、5を配置していることである - 注意点として、私は連続して大きくなる必要はありません。同じ名前の複数のファイルを保存できないことは明らかです。

私の推測では、次の行のファイル数を数え、前の行のファイル数に現在の行のファイル数を追加する前に、NumFilesをゼロにリフレッシュしていないと思います。

CODE:FINALLY

- ここに私のコードです:

Sub CountFiles() 

    Sheets("Sheet1").Activate 

    Dim i As Integer 
    Dim x As Integer 
    Dim Folder As String 
    Dim ExcelFN As String 
    Dim NumFiles As Integer 

    x = Sheets("Sheet1").Range("AI1").Value '====>> Define Number of Rows <<==== 

    For i = 2 To x 

     Folder = Sheets("Sheet1").Range("AE" & i).Value & "\" 
     ExcelFN = Sheets("Sheet1").Range("AH" & i).Value 

     Filename = Dir(Folder & ExcelFN & "*" & ".xlsm") 

     While Filename <> "" 
      NumFiles = NumFiles + 1 
      Filename = Dir() 
     Wend 

     Sheets("Sheet1").Range("AI" & i) = NumFiles 

    Next i 
End Sub 

答えて

1

ちょうどあなたのループの先頭でNumFilesの値をリセットします。

For i = 2 To x 

    NumFiles = 0 '<-- Reset count 

    Folder = Sheets("Sheet1").Range("AE" & i).Value & "\" 
    ExcelFN = Sheets("Sheet1").Range("AH" & i).Value 

    Filename = Dir(Folder & ExcelFN & "*" & ".xlsm") 

    While Filename <> "" 
     NumFiles = NumFiles + 1 
     Filename = Dir() 
    Wend 

    Sheets("Sheet1").Range("AI" & i) = NumFiles 

Next i 
関連する問題