2009-06-10 8 views
0

Je reçois une erreur lorsque j'utilise opentextfile. Le problème est bizarre car cela fonctionne pour quelques centaines de fichiers puis apparaît.OpentextFile Autorisation refusée Erreur

Fondamentalement, le script obtient une collection de fichiers, recherche dans ceux-ci une chaîne qu'il supprime ensuite et réécrit le contenu modifié dans le même fichier. Le problème se produit lorsque le script veut à nouveau ouvrir le fichier afin qu'il puisse y écrire le contenu modifié.

Voici le code:

For Each objFile in colFiles 

    Set objCurrentFile = objFSO.OpenTextFile(objFile.Path, ForReading) 

    'Get file contents - exclude end tag     ' 
    Do Until objCurrentFile.AtEndOfStream 

    strLine = objCurrentFile.ReadLine 

    If InStr(strLine, strSearchTerm) = 0 Then 
     strNewContents = strNewContents & strLine & vbCrLf 
    End If 
    Loop 

    objCurrentFile.Close 

    objCurrentFile = nothing 

    'Write new file contents to existing file    ' 
    Set objNewFile = objFSO.OpenTextFile(objFile.Path, ForWriting) 'PROBLEM LINE    ' 

    objNewFile.Write strNewContents 
    objNewFile.Close 
    objNewFile = nothing 
Next 
+0

Quelle est l'erreur que vous obtenez? – aphoria

Répondre

0

Le fichier est en lecture seule.
Essayez d'ajouter ceci avant d'ouvrir le fichier texte en écriture.
Si le fichier est en lecture seule, il supprimera l'attribut en lecture seule.

IsReadOnly = False 
IF objFile.Attributes AND 1 Then 
    objFile.Attributes = objFile.Attributes - 1 
    IsReadOnly = True 
End If 

Ensuite, ajoutez ceci lorsque vous avez fini d'écrire dans le fichier.
Si le fichier était en lecture seule, réglez-le en lecture seule.

If IsReadOnly Then 
    objFile.Attributes = objFile.Attributes + 1 
    IsReadOnly= False 
End If 
0

J'ai trouvé le problème. J'ouvrais le fichier texte, puis le copiais dans un autre dossier et effectuais ensuite plus d'opérations sur le fichier avant de fermer le flux.

Une fois que j'ai déplacé le code du fichier de copie avant d'avoir ouvert le flux, cela fonctionne parfaitement.

Merci pour l'aide cependant, je vais utiliser votre code à l'avenir pour être sûr lorsque vous travaillez avec des fichiers texte.

0

vous pouvez essayer l'autorisation de contrôle total givin dans le dossier où se trouve le fichier à lire.

Questions connexes