2016-12-20 3 views
2

Сначала я опишу определения моего кода, затем определите свою проблему и, наконец, покажу текущий код.Количество файлов с конкретным именем файла в определенной папке

ОПРЕДЕЛЕНИЕ:

Я пытаюсь создать зацикленную функцию, которая подсчитывает количество файлов с определенным/определенным именем в папке с определенным/определенным именем.

Столбец AE определяет путь к папке («Папка»). Столбец AH определяет имя файла («ExcelFN»).

Сотовый AI1 определяет, сколько строк должно выполняться этой функцией (AI1 = "x").

Я ожидаю, что функция (1) проведет цикл через число строк, (2) подсчитает, сколько файлов с определенным файловым именем (FileName = cell «AH & i») находятся в определенной папке (FolderPath = cell «AE & i "), затем (3) поместите количество файлов в ячейку« AI & i »и, наконец, (4) перейдите к следующей строке« i »и повторите предыдущие шаги.

ПРОБЛЕМА:

Моя проблема заключается в том, что мой код размещения 1, 2, 3, 4, 5, и т.д. ... все пути вниз AI - Как примечание, я не последовательно больше количество файлов по мере того, как я перемещаюсь по списку, так как должно быть очевидно, что нельзя сохранить несколько файлов с тем же именем.

Я предполагаю, что мой код не обновляет NumFiles до нуля, прежде чем подсчитывать количество файлов следующей строки и просто добавляя количество файлов текущих строк в число файлов предыдущих строк.

КОД:

НАКОНЕЦ - вот мой код:

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 
Смежные вопросы