0
votes

Utilisation d'Excel VBA pour copier des extensions de fichier spécifiques dans un autre dossier à l'aide de la méthode FSO

essayer d'utiliser la technique FSO pour copier du dossier source C: \ (v) au dossier cible C: (tout) mais le code d'exécution Donnez le message Erreur d'exécution 53. fichier non trouvé

Que J'essaie d'atteindre consiste à copier tout le fichier XLSX du dossier source C: \ V contenant également une autre extension de fichier PDF, CSV, TXT, Word ..

Tous XLSX sera copié dans le dossier C: \ Tout,

Erreur d'exécution de cette ligne ci-dessous

**** FSO.CopyFile Source: = SourcePath & FileExtn, Destination: = DestinationPath **** < Pré> xxx


0 commentaires

3 Réponses :


0
votes

HI CHANGEMENT FileExtn = "* .xlsx" à fileextn = "* .xlsx" et cela devrait corriger votre problème.

edit

Le code ci-dessous doit corriger votre autre sous-procédure. xxx


2 commentaires

Salut change selon votre message mais obtenez une erreur de compilation, variable non définie "SUB COPY_FILES_FROM_SUBFOLDERS ()" SOURCEPATH = "C: \ V"


Ce serait un problème différent et je pense qu'il est connecté à votre copy_files_from_subfolders () sous procédure. J'ai édité ma réponse et essayez de copier le nouveau code pour la copy_files_from_subfolders. Si vous obtenez toujours une erreur exclure d'abord de votre code et assurez-vous que la copie fonctionne.



0
votes

J'ai vérifié "sous copie_specific_files_in_foldera ()" fonctionne, il copie tous les fichiers dans le répertoire principal de C: \ V à C: \ Tout sauf dans l'application de votre édition. Je reçois la variable de message d'erreur de compilation non définie SourcePath fort>. "Sous copie_files_from_subfolders ()" en jaune.

Sub copy_specific_files_in_foldera()


0 commentaires

0
votes

généralement trop de codage rigide dans les fonctions / sous-marins.

Gardez les variables en tant qu'entrées: J'ai ajouté une référence à Microsoft.Scripsting.Runtime P>

Sub CopyFiles(extension As String, sourceFolder As String, targetFolder As String, recursive As Boolean)
    Dim fso As New FileSystemObject
    Dim src As folder, dest As folder

    Set src = fso.GetFolder(sourceFolder)
    Set dest = fso.GetFolder(targetFolder)

    Dim srcFile As File
    For Each srcFile In src.Files
        Dim srcFilepath As String
        srcFilepath = srcFile.Path
        If Right(srcFilepath, Len(srcFilepath) - InStrRev(srcFilepath, ".") + 1) = extension Then   'extension includes the "."
            srcFile.Copy targetFolder, True 'I set Overwrite to True
        End If
    Next srcFile

    If recursive Then   'If recursive is True then will go through all subfolders recursively
        Dim subDir As folder
        For Each subDir In src.SubFolders
            CopyFiles extension, subDir.Path, targetFolder, True
        Next subDir
    End If
End Sub

Sub testCopy()
    CopyFiles ".xlsm", "C:\Source", "C:\Destination\", True
End Sub


0 commentaires