Максимальный размер коллекции - PullRequest
5 голосов
/ 29 июня 2010

Вот мой код:

Sub isdofsodjisf48023jroi23f984444444jiodfiosj12348023jroi23f98()


Dim colFiles As New Collection
    RecursiveDir colFiles, "C:\Documents and Settings\Alex Gordon\Desktop\testing\files\", "*.xls", True

    Dim vFile As Variant
    For Each vFile In colFiles
        Call writeincells(vFile)
    Next vFile

End Sub



Public Function RecursiveDir(colFiles As Collection, _
                             strFolder As String, _
                             strFileSpec As String, _
                             bIncludeSubfolders As Boolean)

    Dim strTemp As String
    Dim colFolders As New Collection
    Dim vFolderName As Variant

    'Add files in strFolder matching strFileSpec to colFiles
    strFolder = TrailingSlash(strFolder)
    strTemp = Dir(strFolder & strFileSpec)
    Do While strTemp <> vbNullString
        colFiles.Add strFolder & strTemp
        strTemp = Dir
    Loop

    If bIncludeSubfolders Then
        'Fill colFolders with list of subdirectories of strFolder
        strTemp = Dir(strFolder, vbDirectory)
        Do While strTemp <> vbNullString
            If (strTemp <> ".") And (strTemp <> "..") Then
                If (GetAttr(strFolder & strTemp) And vbDirectory) <> 0 Then
                    colFolders.Add strTemp
                End If
            End If
            strTemp = Dir
        Loop

        'Call RecursiveDir for each subfolder in colFolders
        For Each vFolderName In colFolders
            Call RecursiveDir(colFiles, strFolder & vFolderName, strFileSpec, True)
        Next vFolderName
    End If

End Function


Public Function TrailingSlash(strFolder As String) As String
    If Len(strFolder) > 0 Then
        If Right(strFolder, 1) = "\" Then
            TrailingSlash = strFolder
        Else
            TrailingSlash = strFolder & "\"
        End If
    End If
End Function

Я заполняю коллекцию списком имен файлов в структуре каталогов.

У меня 2000 файлов, но Коллекция возвращает только 256. Кто-нибудь знает, существует ли максимальное число, которое он не пройдет?

Если да, то можете ли вы предложить лучший способ кодирования этого макроса, чтобы он захватывал все 2000 файлов?

Ответы [ 2 ]

19 голосов
/ 29 июня 2010

Код работает нормально в Excel 2007. Возможно, происходит следующее: вы пытаетесь просмотреть коллекцию в режиме отладки.Отладчик показывает только первые 256 элементов.

1 голос
/ 29 июня 2010

Как насчет отключенного набора записей?Эта тема о VBScript, но очень похожа на VBA:

Как сортировать массивы с помощью vbscript?

...