サブフォルダを持つディレクトリからすべてのファイルをループするものを作成します。次に、それぞれのExcelファイルを開き、合計量をコピーします。合計を含むセルが常に特定の行にあるわけではありませんが、その行の列Bにはテキスト「合計金額」が含まれています。合計を含むセルは、常に列Iにあります。セルをコピーした後、セル(i、2)内の新しいシートにマスターブック(マクロが実行されているブック)をペーストします。すべてのサブフォルダのすべてのファイルを調べ、1つのセルからデータを取得してマスタワークブックに貼り付けます。
セル、1)およびCell(1,2)はヘッダーです。 - あなたのモジュールの最上部にOption Explicit
を配置し、コンパイルしようとすると、それが教えてくれます
Sub PaymentFileMatching()
Dim HostFolder As String
Dim f As String, i As Long, arr, sht As Worksheet
Dim FSO As Object, objFolder As Object, FileInFolder As Object
Dim wb As Workbook, Masterwb As Workbook
Set sht = ActiveSheet
Set FSO = CreateObject("Scripting.filesystemobject")
Dim objSubFolder As Object
HostFolder = "C:\Users\kxc8574\Documents\Payment Files\Payment Files (Corrected)\PE20170701\"
Set objFolder = FSO.GetFolder(HostFolder)
Set Masterwb = Workbooks("Master Template")
Sheets("Sheet9").Activate
sht.Cells(1, 1).Resize(1, 2).Value = _
Array("GROUPER", "EFT_AMOUNT")
i = 2
For Each objSubFolder In objFolder.subfolders
For Each FileInFolder In objSubFolder.Files
sht.Cells(i, 1).Value = Left(FileInFolder.Name, InStr(FileInFolder.Name, "PE 2017") - 1)
Set wb = Workbooks.Open(objSubFolder & "\" & FileInFolder.Name)
For Each sht In Worksheets
For Each Cell In Sheets("Payment Summary").Range("B:B")
If Cell.Value = "Final EFT Payment Amount" Then
matchRow = Cell.Row
Cells(matchRow, 8).Copy
Workbooks("Master Template").Worksheets("Sheet9").Cells(i, 2).PasteSpecial xlPasteValues
i = i + 1
End If
Next Cell
Next FileInFolder
Next objSubFolder
End Sub
あなたの現在のコードの問題は何ですか? –
これは文法上問題があるかどうかわからないので、cell.value = "最終的なEFT支払い金額"を超えていません...申し訳ありません、私はVBA –