'Loop through folder get data from specific ranges copy to master
Im working on creating an macro that will pull data from a specific group of ranges across many files in one folder and feed that data into a master file in the same folder. When running the macro, it appears to be functioning but does not paste data in the master file. No errors were given when running the code. Wondering if I'm missing something or need to break this up as copy / paste?
Sub CopyDataLoop()
Dim wsTarget As Worksheet
Dim wbSource As Workbook
Dim wsSource As Worksheet
Dim rowTarget As Long
Dim myFolder As String, sFile As String
myFolder = "C:\TempDriveTest\"
Application.ScreenUpdating = False
rowTarget = 3
Application.ScreenUpdating = False
Set wsTarget = Sheets("Sheet1")
sFile = Dir(myFolder & "*.xls*" & "*.xlsm*" & vbNormal)
Do Until sFile = ""
Set wbSource = Workbooks.Open(myFolder & sFile)
Set wsSource = wbSource.Worksheets("Table of Contents")
With wsTarget
.Range("A" & rowTarget).Value = wsSource.Range("B147").Value
.Range("B" & rowTarget).Value = wsSource.Range("B149").Value
.Range("C" & rowTarget).Value = wsSource.Range("D3").Value
.Range("D" & rowTarget).Value = wsSource.Range("D4").Value
.Range("E" & rowTarget).Value = wsSource.Range("D5").Value
.Range("F" & rowTarget).Value = wsSource.Range("D7").Value
.Range("G" & rowTarget).Value = wsSource.Range("D16").Value
.Range("H" & rowTarget).Value = wsSource.Range("J3").Value
.Range("I" & rowTarget).Value = wsSource.Range("J18").Value
.Range("J" & rowTarget).Value = wsSource.Range("D39").Value
.Range("K" & rowTarget).Value = wsSource.Range("D54").Value
.Range("L" & rowTarget).Value = wsSource.Range("J39").Value
.Range("M" & rowTarget).Value = wsSource.Range("J54").Value
.Range("N" & rowTarget).Value = wsSource.Range("D76").Value
.Range("O" & rowTarget).Value = wsSource.Range("J76").Value
.Range("P" & rowTarget).Value = wsSource.Range("D92").Value
.Range("Q" & rowTarget).Value = wsSource.Range("J92").Value
.Range("R" & rowTarget).Value = wsSource.Range("D113").Value
.Range("S" & rowTarget).Value = wsSource.Range("J112").Value
.Range("T" & rowTarget).Value = wsSource.Range("D128").Value
.Range("U" & rowTarget).Value = wsSource.Range("J128").Value
End With
wbSource.Close SaveChanges:=False
rowTarget = rowTarget + 1
sFile = Dir()
Loop
End Sub
Sub TurnOnEvents()
Application.EnableEvents = True
End Sub
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
