请帮助编写公式以从 300 个已关闭的工作簿中提取数据(我不想打开这 300 个工作簿中的任何一个)。项目描述:有 300 个 excel 时间表。需要将每个时间表的范围(A1:AC51)复制到主计算工作簿上,计算工资单,然后将工资单结果复制到同一主工作簿中的另一个工作表中。这里的技巧是在不打开 300 个 excel 时间表的情况下完成此操作。我写了下面的代码,但我不知道如何编写公式来从已关闭的工作簿中提取数据,请帮忙吗?再次,
- 有 300 个 Excel 时间表(已关闭的工作簿),Sheets("EmpInput")
- 有一个主计算工作簿(打开),Sheets("Main")
- 目标:从每个时间表复制完全相同的范围,计算工资单,将结果复制到另一张表,表格(“结果”)
提前谢谢您!
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
答案1
格式为='C:\Path\[SourceFileName.xlsx]SourceSheetName'!A1:Z9
。
尝试Range("A1:AC51").FormulaArray = "='C:\GatherTimesheets\[" & employeeTimesheet & "]EmpInput'!A1:AC51"
。
有关详细信息,请参阅Range.FormulaArray 属性 (Excel)Range.FormulaArray property (Excel)和创建对另一个工作簿中的单元格区域的外部引用(链接)。另外,使用选项明确以避免出现类似拼写错误empoyeeTimesheet
。