2016-07-04 3 views
0

enter image description hereカウント* .pdfファイルやスプレッドシートに

を隣の列を更新し、私は、2列のtracker.xls、次のExcelスプレッドシートを持っている:カテゴリとカウント。

スプレッドシートのカテゴリ列に一致するPDFファイルを含むサブディレクトリをループしたいと思います。

enter image description here

これは私がこれまで行ってきたものですが、私のコードは動作していないようです:

Sub CV() 

    Function CVCount() 

     CategoryArray = Range("A2:A3") 
     CountArray = Range("B2:B3") 

     For i = 1 To UBound(CategoryArray) 

      For j = 1 To UBound(CategoryArray, 2) 

      'get name of category 

      Dim Category As String 
      Category = (myarray(i, j)) 
      FolderPath = Category + "\" 
      path = FolderPath & "\*.pdf" 
      Filename = Dir(path) 

       For k = 1 To UBound(CountArray) 

        For l = 1 To UBound(CountArray, 2) 

         'get count 

         Do While Filename <> "" 
          count = count + 1 
          Filename = Dir() 
         Loop 

         'assign count to cell 
         Range("").Value = count 

       Next k 

      Next j 

     Next i 

    End Function 

End Sub 

私はに数を割り当てる方法を見つけ出すように見えることはできません細胞。任意のアイデアにする方法?

答えて

1

あなたは正しい軌道に乗っているが、それはそれよりもはるかに簡単です:

Option Explicit 

Private Const baseFolder As String = "C:\Users\Hazel\Documents\Personal\Accounts\Childcare\" 

Sub countFiles() 

    Dim path As String 
    Dim fileName As Variant 
    Dim count As Integer 
    Dim i As Integer 

    i = 1 

    Do While Range("A" & i + 1).Value <> "" 

     count = 0 

     i = i + 1 
     path = baseFolder & Range("A" & i).Value & "\" 

     fileName = Dir(path) 

     Do While fileName <> "" 

      If UCase$(Right(fileName, 3)) = "PDF" Then count = count + 1 
      fileName = Dir() 

     Loop 

     Range("B" & i).Value = count 

    Loop 

End Sub 

はちょうどあなたの出発ディレクトリに合わせて「baseFolder」の定数を変更します。

+0

ありがとうございました。開始ディレクトリがxlsmファイルが保存されている場所ならどうなりますか?自動的に識別することはできませんか? – methuselah

+1

はい、 'ActiveWorkbook.Path'を使用してください。 – Parfait

関連する問題