
Пожалуйста, помогите написать формулу для извлечения данных из 300 закрытых рабочих книг (и я не хочу открывать ни одну из этих 300 рабочих книг). Описание проекта: Есть 300 табелей учета рабочего времени Excel. Нужно скопировать диапазон (A1:AC51) из каждого табеля в основную расчетную книгу, рассчитать заработную плату, а затем скопировать результат расчета заработной платы на другой лист в той же основной рабочей книге. Хитрость здесь в том, чтобы сделать это, не открывая 300 табелей учета рабочего времени Excel. Я написал код ниже, но я застрял на том, как написать формулу для извлечения данных из закрытой рабочей книги, пожалуйста, помогите? Еще раз,
- Имеется 300 табелей учета рабочего времени Excel (закрытые рабочие книги), Sheets("EmpInput")
- Имеется одна основная расчетная книга (открытая), Sheets("Main")
- Цель: Скопировать один и тот же диапазон из каждого табеля учета рабочего времени, рассчитать заработную плату, скопировать результат на другой лист, Sheets("Results")
Огромное спасибо заранее!
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)иСоздать внешнюю ссылку на диапазон ячеек в другой книге. Также используйтеВариант Явныйчтобы избежать опечаток, таких как empoyeeTimesheet
.