
Ayúdeme a escribir la fórmula para extraer datos de 300 libros cerrados (y no quiero abrir ninguno de esos 300 libros). Descripción del proyecto: Hay 300 hojas de horas en Excel. Necesita copiar el rango (A1:AC51) de cada hoja de horas en el libro de cálculo principal, calcular la nómina y luego copiar el resultado de la nómina a otra hoja de trabajo en el mismo libro principal. El truco aquí es hacerlo sin abrir las 300 hojas de horas de Excel. Escribí el código a continuación, pero no sé cómo escribir la fórmula para extraer los datos de un libro cerrado, ¿ayuda? De nuevo,
- Hay 300 hojas de horas de Excel (libros cerrados), Hojas de cálculo ("EmpInput")
- Hay un libro de cálculo principal (abierto), Hojas de cálculo ("Principal")
- Objetivo: copiar exactamente el mismo rango de cada hoja de horas, calcular la nómina, copiar el resultado a otra hoja, Hojas ("Resultados")
¡Muchas gracias de antemano!
Public Sub GetTimesheetData()
Dim fsoFileObject As New Scripting.FileSystemObject
Dim employeeTimesheet As File
Dim folderPath As String
Dim nextEmpty As Long
folderPath = "C:\GatherTimesheets\" '<<<<< There are 300 excel timesheets in this folder.
For Each employeeTimesheet In fso.folderPath.Files '<<<< Is this correct?
If empoyeeTimesheet.Name Like "*.xls" Then
Sheets("Main").Select
With Range("A1:AC51")
.Formula = "='C:\GatherTimesheets\" & employeeTimesheet '<<<< How to write this formula??
.Value = .Value
End With
nextEmpty = Sheets("Results").Range("D65444").End(xlUp).Row + 1
Sheets("Main").Range("CS1:DF1").Copy
With Sheets("StagingRaw").Range("D" & nextEmpty)
.PasteSpecial xlValues
Application.CutCopyMode = False
End With
End If
Next employeeTimesheet
End Sub
Respuesta1
El formato es ='C:\Path\[SourceFileName.xlsx]SourceSheetName'!A1:Z9
.
Intentar Range("A1:AC51").FormulaArray = "='C:\GatherTimesheets\[" & employeeTimesheet & "]EmpInput'!A1:AC51"
.
Para más información verPropiedad Range.FormulaArray (Excel)yCrear una referencia externa (enlace) a un rango de celdas en otro libro. Además, utiliceOpción explícitapara evitar errores tipográficos como empoyeeTimesheet
.