VBA - 300 個の閉じたワークブックの範囲を 1 つのメインの統合ワークブックにコピーする

VBA - 300 個の閉じたワークブックの範囲を 1 つのメインの統合ワークブックにコピーする

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

関連情報