
Loop de copiar y pegar informacion en un archivo nuevo para crear una base
Publicado por Pedro Canales (4 intervenciones) el 07/09/2023 00:21:28
Buenas tardes, les platico un poco de mi caso:
Tengo que hacer una macro que abra todos los archivos de una carpeta, tiene que hacer unas sumas, copiar unos datos y pegarlos en un el archivo donde tengo al macro, para hacer una base de datos en un archivo nuevo ese archivo nuevo la primera hoja quiero usarla para poner las instrucciones la segunda estara la base
Tengo mi codigo pero me aparece el error '9' subindice fuera del intervalo meaparece el error en la fila "Wb.Sheets("Datos Trabajador").Range("B1").Copy Wb.Sheets("Hoja2").Cells(FilaActual, 8) y para los consiguientes
Me pueden ayudar por fa?
Les muestro mi codigo:
Sub ProcesarArchivosEnCarpeta()
Dim Carpeta As String
Dim Archivo As String
Dim Wb As Workbook
Dim Ws As Worksheet
Dim FilaActual As Long
' Definir la carpeta donde se encuentran los archivos
Carpeta = "direccion de carpeta en cuestion" ' Cambia esto a la ruta de tu carpeta
' Inicializar la fila actual
FilaActual = 3
' Ciclo para recorrer los archivos en la carpeta
Archivo = Dir(Carpeta & "\*.xlsx") ' Cambia el tipo de archivo según tus necesidades
Do While Archivo <> ""
' Abrir el archivo
Set Wb = Workbooks.Open(Carpeta & "\" & Archivo)
' Copiar el valor de B1 a Hoja2, celda H
Wb.Sheets("Datos Trabajador").Range("B1").Copy Wb.Sheets("Hoja2").Cells(FilaActual, 8)
' Realizar las sumas y pegar los resultados en Hoja2
Wb.Sheets("Hoja2").Cells(FilaActual, 7).Value = Application.WorksheetFunction.Sum(Wb.Sheets("Datos trabajador").Range("N3:T3", Wb.Sheets("Datos trabajador").Range("T3").End(xlDown)))
Wb.Sheets("Hoja2").Cells(FilaActual, 10).Value = Application.WorksheetFunction.Sum(Wb.Sheets("Datos trabajador").Range("AG3:AJ3", Wb.Sheets("Datos trabajador").Range("AJ3").End(xlDown)))
Wb.Sheets("Hoja2").Cells(FilaActual, 11).Value = Wb.Sheets("Hoja2").Cells(FilaActual, 7).Value - Wb.Sheets("Hoja2").Cells(FilaActual, 10).Value
Wb.Sheets("Hoja2").Cells(FilaActual, 12).Value = Application.WorksheetFunction.Sum(Wb.Sheets("Datos trabajador").Range("Y3", Wb.Sheets("Datos trabajador").Range("Y3").End(xlDown)))
Wb.Sheets("Hoja2").Cells(FilaActual, 13).Value = Application.WorksheetFunction.Sum(Wb.Sheets("Datos trabajador").Range("AA3", Wb.Sheets("Datos trabajador").Range("AA3").End(xlDown)))
Wb.Sheets("Hoja2").Cells(FilaActual, 14).Value = Application.WorksheetFunction.Sum(Wb.Sheets("Datos trabajador").Range("AB3", Wb.Sheets("Datos trabajador").Range("AB3").End(xlDown)))
Wb.Sheets("Hoja2").Cells(FilaActual, 15).Value = Application.WorksheetFunction.Sum(Wb.Sheets("Datos trabajador").Range("AE3", Wb.Sheets("Datos trabajador").Range("AE3").End(xlDown)))
Wb.Sheets("Hoja2").Cells(FilaActual, 16).Value = Application.WorksheetFunction.Sum(Wb.Sheets("Datos trabajador").Range("AF3", Wb.Sheets("Datos trabajador").Range("AF3").End(xlDown)))
' Cerrar el archivo sin guardar cambios
Wb.Close SaveChanges:=False
' Incrementar la fila actual
FilaActual = FilaActual + 1
' Obtener el siguiente archivo en la carpeta
Archivo = Dir
Loop
End Sub
Tengo que hacer una macro que abra todos los archivos de una carpeta, tiene que hacer unas sumas, copiar unos datos y pegarlos en un el archivo donde tengo al macro, para hacer una base de datos en un archivo nuevo ese archivo nuevo la primera hoja quiero usarla para poner las instrucciones la segunda estara la base
Tengo mi codigo pero me aparece el error '9' subindice fuera del intervalo meaparece el error en la fila "Wb.Sheets("Datos Trabajador").Range("B1").Copy Wb.Sheets("Hoja2").Cells(FilaActual, 8) y para los consiguientes
Me pueden ayudar por fa?
Les muestro mi codigo:
Sub ProcesarArchivosEnCarpeta()
Dim Carpeta As String
Dim Archivo As String
Dim Wb As Workbook
Dim Ws As Worksheet
Dim FilaActual As Long
' Definir la carpeta donde se encuentran los archivos
Carpeta = "direccion de carpeta en cuestion" ' Cambia esto a la ruta de tu carpeta
' Inicializar la fila actual
FilaActual = 3
' Ciclo para recorrer los archivos en la carpeta
Archivo = Dir(Carpeta & "\*.xlsx") ' Cambia el tipo de archivo según tus necesidades
Do While Archivo <> ""
' Abrir el archivo
Set Wb = Workbooks.Open(Carpeta & "\" & Archivo)
' Copiar el valor de B1 a Hoja2, celda H
Wb.Sheets("Datos Trabajador").Range("B1").Copy Wb.Sheets("Hoja2").Cells(FilaActual, 8)
' Realizar las sumas y pegar los resultados en Hoja2
Wb.Sheets("Hoja2").Cells(FilaActual, 7).Value = Application.WorksheetFunction.Sum(Wb.Sheets("Datos trabajador").Range("N3:T3", Wb.Sheets("Datos trabajador").Range("T3").End(xlDown)))
Wb.Sheets("Hoja2").Cells(FilaActual, 10).Value = Application.WorksheetFunction.Sum(Wb.Sheets("Datos trabajador").Range("AG3:AJ3", Wb.Sheets("Datos trabajador").Range("AJ3").End(xlDown)))
Wb.Sheets("Hoja2").Cells(FilaActual, 11).Value = Wb.Sheets("Hoja2").Cells(FilaActual, 7).Value - Wb.Sheets("Hoja2").Cells(FilaActual, 10).Value
Wb.Sheets("Hoja2").Cells(FilaActual, 12).Value = Application.WorksheetFunction.Sum(Wb.Sheets("Datos trabajador").Range("Y3", Wb.Sheets("Datos trabajador").Range("Y3").End(xlDown)))
Wb.Sheets("Hoja2").Cells(FilaActual, 13).Value = Application.WorksheetFunction.Sum(Wb.Sheets("Datos trabajador").Range("AA3", Wb.Sheets("Datos trabajador").Range("AA3").End(xlDown)))
Wb.Sheets("Hoja2").Cells(FilaActual, 14).Value = Application.WorksheetFunction.Sum(Wb.Sheets("Datos trabajador").Range("AB3", Wb.Sheets("Datos trabajador").Range("AB3").End(xlDown)))
Wb.Sheets("Hoja2").Cells(FilaActual, 15).Value = Application.WorksheetFunction.Sum(Wb.Sheets("Datos trabajador").Range("AE3", Wb.Sheets("Datos trabajador").Range("AE3").End(xlDown)))
Wb.Sheets("Hoja2").Cells(FilaActual, 16).Value = Application.WorksheetFunction.Sum(Wb.Sheets("Datos trabajador").Range("AF3", Wb.Sheets("Datos trabajador").Range("AF3").End(xlDown)))
' Cerrar el archivo sin guardar cambios
Wb.Close SaveChanges:=False
' Incrementar la fila actual
FilaActual = FilaActual + 1
' Obtener el siguiente archivo en la carpeta
Archivo = Dir
Loop
End Sub
Valora esta pregunta


0