
300 個の閉じたワークブックからデータを引き出す数式の作成を手伝ってください (300 個のワークブックはどれも開きたくありません)。プロジェクトの説明: 300 個の Excel タイムシートがあります。各タイムシートから範囲 (A1:AC51) をメインの計算ワークブックにコピーし、給与を計算し、給与計算結果を同じメイン ワークブックの別のワークシートにコピーする必要があります。ここでの秘訣は、300 個の Excel タイムシートを開かずに実行することです。以下のコードを作成しましたが、閉じたワークブックからデータを引き出す数式の書き方がわかりません。助けてください。再度、
- 300 個の Excel タイムシート (閉じたワークブック)、Sheets("EmpInput") があります。
- メインの計算ワークブック(開いている)が 1 つあります。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
。