Macro que copia archivos entre carpetas e indique resultado.

Tengo una macro que busca archivos con cierto nombre especificado y los pega en una ruta especifica.

Actualmente funciona bien, pero cuando el archivo indicado no se encuentra (no copia y pega), la idea es que en la columna ("G:G") me indique cuantos archivos copia de esa carpeta. Me explico: en la Columna ("A:A") estan unos números de carpeta, en las columnas ("B:E") están los nombres de los archivos "Estos nombres están formulados ya que mantienen un mismo formato", en la columna ("F:F") esta la ruta de destino donde debe guardar los cuatro documentos, pero en ocasiones no trae los cuatro, la idea es que en la columna ("G:G") me indique cuantos archivos copia de esa carpeta. Ejemplo: 1 de 4, 2 de 4, 3 de 4, o 4 de 4. La carpeta de origen donde están los archivos esta dentro del código.

El código actual es este:


  1. Sub Copiar_Archivos_JC()
    'John Cárdenas.
        Hoja1.Select
        Dim Name_Files As Range, xCell As Range
        Dim xSFileDlg As FileDialog, xDFileDlg As FileDialog
        Dim Carpeta_Origen As Variant, Carpeta_Destino As Variant
        Dim xVal As String
        ult_ren = Application.WorksheetFunction.CountA(Range("A:A"))
        If ult_ren <= 1 Then
            MsgBox "No se puede continuar no existen carpetas a buscar", 16, "John Cárdenas"
            Exit Sub
        Else
            Range("Cedula").Select
            Columna_Inicial = ActiveCell.Column
            Columna_Final = Columna_Inicial + 3
            Dim i As Long
            For i = 2 To ult_ren
                For i2 = Columna_Inicial To Columna_Final 'indicador de columnas
                    On Error Resume Next
                    Set Name_Files = Cells(i, i2)
                    If Name_Files Is Nothing Then Exit Sub
                    Carpeta_Origen = "C:\f\Carpeta1\" & Cells(i, 1) & "\2.DOCUMENTOS_FASE 2\"
                    Carpeta_Destino = Cells(i, Columna_Final + 1)
                    For Each xCell In Name_Files
                        xVal = xCell.Value
                        If TypeName(xVal) = "String" And xVal <> "" Then
                            FileCopy Carpeta_Origen & xVal, Carpeta_Destino & xVal
                        End If
                    Next
                Next
            Next
            Range("A1").Select
        End If
    End Sub

La base de datos que tengo o la hoja1 es esta:

Añade tu respuesta

Haz clic para o