2010-06-28 7 views
4

Voici mon code:Collection Taille maximum

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 

Je remplir une collection avec une liste de noms de fichiers dans une structure de répertoire.

J'ai 2000 fichiers, mais la collection retour seulement 256. Est-ce que quelqu'un sait s'il y a un nombre maximum qu'il ne passera pas passé?

Si oui, pouvez-vous s'il vous plaît suggérer une meilleure façon de coder cette macro afin qu'il capture tous les fichiers 2000?

+0

Votre code fonctionne parfaitement bien pour moi avec des milliers de fichiers. Êtes-vous certain d'avoir la permission d'accéder à ce dossier? –

+2

Désolé, je dois demander. Comment avez-vous trouvé ce nom de procédure? –

+4

s'il vous plaît ne posez pas ces questions difficiles –

Répondre

14

Le code fonctionne sur OK dans Excel 2007. Peut-être ce qui se passe est que vous essayez de regarder la collection en mode débogage. Le débogueur affiche uniquement les 256 premiers éléments.

Questions connexes