2

共有フォルダー内のそれらへのリンクに何百ものフォルダーがあります
例:

a:\Images\abc\year\month\date\names1
a:\Images\abc\year\month\date\names2
a:\Images\abc\year\month\date\names3 etc,.

各フォルダーには、ほとんど情報を含まない csv (abc.csv各フォルダーの定数名) があります。

例えば:

1 Orange USA
2 Apple England
3 Orange Australia
4 Orange Austria
5 Apple India

ここでは、異なるフォルダーの CSV に含まれるオレンジ、リンゴ、ブドウ、メロンの数を数えたいと思います。

私は次のような出力を期待しています:

Link    Oranges Apples  Grapes  Melon

\names1 5846    2000    85215   586

\Names2 4521    1542    45852   125

\Names3 365     4856    25415   548

親切に助けて...

4

1 に答える 1

2

このコードを試してください。列(1)にリストされている各フォルダーに含まれるファイル abc.csv を開き、アイテムを数えてから、ファイルを閉じて次に進みます。

Option Explicit

Sub CountApples()
Dim wbk As Workbook, sht As Worksheet, wbkTemp As Workbook, lLoop As Long, lLastRow As Long

'turn off updates to speed up code execution
With Application
    .ScreenUpdating = False
    .EnableEvents = False
    .Calculation = xlCalculationManual
End With

Set sht = ActiveSheet

lLastRow = sht.Cells(sht.Rows.Count, 1).End(xlUp).Row

For lLoop = 2 To lLastRow
    Set wbkTemp = Workbooks.Open(sht.Cells(lLoop, 1) & "\abc.csv")

    sht.Cells(lLoop, 2).Value = Application.WorksheetFunction.CountIf(wbkTemp.Sheets(1).Columns(1), "Oranges")
    sht.Cells(lLoop, 3).Value = Application.WorksheetFunction.CountIf(wbkTemp.Sheets(1).Columns(1), "Apples")
    sht.Cells(lLoop, 4).Value = Application.WorksheetFunction.CountIf(wbkTemp.Sheets(1).Columns(1), "Grapes")
    sht.Cells(lLoop, 5).Value = Application.WorksheetFunction.CountIf(wbkTemp.Sheets(1).Columns(1), "Melon")

    wbkTemp.Close (False)
Next lLoop

With Application
    .ScreenUpdating = True
    .EnableEvents = True
    .Calculation = xlCalculationAutomatic
End With


End Sub
于 2012-10-13T00:47:55.400 に答える