/ / Połącz wiele plików .xls w jeden arkusz - excel, vba, excel-vba, scal

Scal wiele plików .xls w jeden arkusz - excel, vba, excel-vba, scal

Mam folder pełen.Pliki xls, wszystkie pliki mają taką samą strukturę (nazwy kolumn), chciałem, aby kod otwierał każdy plik w folderze i kopiował zawartość arkusza1 i wklejał inny plik Excela do arkusza1, otwierał drugą kopię pliku i dołączał do arkusza 1

Obecnie kod, który mam, robi to jako inny arkusz

  Sub GetSheets()
Path = "C:UsersdtDesktopdt kte"
Filename = Dir(Path & "*.xls")
Do While Filename <> ""
Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
For Each Sheet In ActiveWorkbook.Sheets
Sheet.Copy After:=ThisWorkbook.Sheets(1)
Next Sheet
Workbooks(Filename).Close
Filename = Dir()
Loop
End Sub

Odpowiedzi:

1 dla odpowiedzi № 1

To powinno załatwić sprawę:

Sub GetSheets()
Dim WriteRow As Long, _
LastCell As Range, _
WbDest As Workbook, _
WbSrc As Workbook, _
WsDest As Worksheet, _
WsSrc As Worksheet

Set WbDest = ThisWorkbook
Set WsDest = WbDest.Sheets.Add
WsDest.Cells(1, 1) = "Set your headers here"

Path = "C:UsersdtDesktopdt kte"
Filename = Dir(Path & "*.xls")

Do While Filename <> ""
Set WbSrc = Workbooks.Open(Filename:=Path & Filename, ReadOnly:=True)
Set WsSrc = WbSrc.Sheets(1)
With WsSrc
Set LastCell = .Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False)
.Range(.Range("A1"), LastCell).Copy
End With
With WsDest
WriteRow = .Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row + 1
.Range("A" & WriteRow).Paste
End With

WbSrc.Close
Filename = Dir()
Loop

End Sub