2017-10-17 8 views
0

J'écris un sous-programme qui doit extraire le texte des fichiers d'un répertoire. La routine est ci-dessous. Cela fonctionne tant qu'il n'y a qu'un seul fichier dans le répertoire. Quand il y en a plus d'un, il me dit Set intFSO = intFSO.OpenTextFile(filePath, 1) ligne ci-dessous. Je suppose qu'il y a quelque chose que je dois faire pour réinitialiser pour le prochain fichier mais je n'arrive pas à comprendre ce que c'est. Des conseils?Ouverture de chaque fichier dans une boucle

Sub ExtractEDI(folPath) 
    Dim sName, fil 
    Dim intFSO 
    Dim filePath 

    Set intFSO = CreateObject("Scripting.FileSystemObject") 

    For Each fil In fso.GetFolder(folPath).Files 
    filePath = folpath & "\" & fil.Name 
    Set intFSO = intFSO.OpenTextFile(filePath, 1) 

    'will process file here 

    intFSO.Close 
    Next 
    Set intFSO = Nothing 
End Sub 

Il y a plus à ce script. La routine ci-dessus est appelée récursivement afin de parcourir les sous-répertoires. Tout cela fonctionne bien.

Répondre

3
Set intFSO = intFSO.OpenTextFile(filePath, 1) 
' ^^^^^^ ^^^^^^ 

Ne pas remplacer votre FileSystemObject par exemple avec une poignée de fichier si vous avez l'intention de l'utiliser à nouveau dans la prochaine itération. Utilisez une variable différente pour le fichier. Et laissez tomber la concaténation du chemin entier/OpenTextFile shebang. Vous pouvez ouvrir le fichier directement à partir de l'objet File.

Ceci est tout ce que vous avez besoin (en supposant fso est une instance globale FileSystemObject):

Sub ExtractEDI(folPath) 
    For Each fil In fso.GetFolder(folPath).Files 
    Set f = fil.OpenAsTextStream 

    'will process file here 

    f.Close 
    Next 
End Sub 
+0

Cela est logique. Merci beaucoup. – Quintin

+0

@lankymart J'ai mis le premier extrait de code dans un blockquote pour indiquer qu'il est cité de la question (moins le "soulignement" bien sûr). –