Umbenennen einer Datei mit dem FileSystemObject-Objekt beim Durchlaufen der Dateien

Als Vorwort, ich bin das schreiben von code in Access 2003, aber Benutzer, die mit Access 2013, und so brauche ich es, um kompatibel zu sein für beide. Ich habe eine Schleife, die die Anwendung verwendet.FileSearch-Schleife durch eine Reihe von Dateien in einem Verzeichnis. Es ist mein Verständnis, dass diese veraltet ist, in einer neueren version von Access, und so habe ich die "For Each" Schleife über Dateien.

Hier ist das Stück code, den ich ändern bin:

strPath = CurrentProject.Path & "\Files\"

strFileName = "SourceCode.txt"

With Application.FileSearch
    .FileName = "*.txt"
    .LookIn = strPath
    .Execute
    intFileCount = .foundfiles.Count
    For x = 1 To intFileCount
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set f = fs.GetFile(.foundfiles(x))
        strNewFileName = Right((.foundfiles(x)), Len((.foundfiles(x))) - (InStr((.foundfiles(x)), "Files\") + 5))
        fs.MoveFile f, strPath & strFileName
        'Run the Process() function
        Process
        FileCopy strPath & strFileName, strPath & "Processed\" & strNewFileName
        Kill strPath & strFileName
    Next x
End With

Und hier der code, den ich ersetzen Sie es mit:

strPath = CurrentProject.Path & "\Files\"

strFileName = "SourceCode.txt"

Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(strPath)
Set fc = f.Files

For Each f1 In fc
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.OpenTextFile(strPath & f1.Name, 1)
    strNewFileName = f1.Name
    f1.Name = strFileName
    'Run the Process() function
    Process
    FileCopy strPath & strFileName, strPath & "Processed\" & strNewFileName
    Kill strPath & strFileName
Next

Dieser code durchläuft jede Datei und startet dann einen Prozess () - Funktion, die änderungen an der Datei. Also So wie ich es habe zu arbeiten ist es, Veränderungen der aktiven Datei benannt werden "SourceCode.txt", dann wird die Process () - Funktion kennt, um die Arbeit mit der Datei dieses namens. Dann verschiebt es die Datei in den "Bearbeitet" - Unterordner, mit Ihren ursprünglichen Dateinamen.

Klappte das im original-code. Der neue code scheint meistens arbeiten, außer ich kann nicht einen Weg finden, benennen Sie die Datei "SourceCode.txt" vor der Gründung von Process(). Ich habe versucht, mehrere Möglichkeiten, aber ich bekomme immer Fehler. Im code oben, ich habe versucht, "f1.Name = strFileName". Das gibt mir ein "Permission Denied" - Fehler. Ich habe versucht, alternativ benutzen Sie FileCopy, und dann der Kill-Befehl auf der original-Datei, aber der Kill-Befehl einen Fehler zurückgab. Ich vermute, das "FileSystemObject" ist die Datei gesperrt, so dass es nicht verschoben werden kann oder getötet werden. Aber die alte version des Codes war in der Lage, um es zu bewegen mit kein problem.

InformationsquelleAutor Michael T | 2013-08-08
Schreibe einen Kommentar