Help on merging multiple excel files data
Closed
seekermay
Posts
28
Registration date
Wednesday January 27, 2010
Status
Member
Last seen
May 27, 2013
-
Jan 4, 2013 at 11:17 AM
rizvisa1 Posts 4478 Registration date Thursday January 28, 2010 Status Contributor Last seen May 5, 2022 - Jan 8, 2013 at 07:30 PM
rizvisa1 Posts 4478 Registration date Thursday January 28, 2010 Status Contributor Last seen May 5, 2022 - Jan 8, 2013 at 07:30 PM
Related:
- Help on merging multiple excel files data
- Transfer data from one excel worksheet to another automatically - Guide
- Excel mod apk for pc - Download - Spreadsheets
- Tmobile data check - Guide
- How to open msi files on android - Guide
- Can jpg files have viruses - Guide
4 responses
rizvisa1
Posts
4478
Registration date
Thursday January 28, 2010
Status
Contributor
Last seen
May 5, 2022
766
Jan 4, 2013 at 03:23 PM
Jan 4, 2013 at 03:23 PM
You would need a macro for that
seekermay
Posts
28
Registration date
Wednesday January 27, 2010
Status
Member
Last seen
May 27, 2013
5
Jan 5, 2013 at 08:53 AM
Jan 5, 2013 at 08:53 AM
how would it be if following are excel file names and headers to be used for this merge process.
Excel file name: abc1, abc2, abc3
(all contains data in sheet1)
data headers (columns): a, b, c, d, e, f, g, h, i, j, k, L
data exist in different number of rows randomly. few files contains data from row2 to row10 and some may contain data from row2 to row90.
need your support to create a sample macro for it.
Excel file name: abc1, abc2, abc3
(all contains data in sheet1)
data headers (columns): a, b, c, d, e, f, g, h, i, j, k, L
data exist in different number of rows randomly. few files contains data from row2 to row10 and some may contain data from row2 to row90.
need your support to create a sample macro for it.
rizvisa1
Posts
4478
Registration date
Thursday January 28, 2010
Status
Contributor
Last seen
May 5, 2022
766
Jan 5, 2013 at 10:57 AM
Jan 5, 2013 at 10:57 AM
Try this
Option Explicit
Sub consolidateIntoOneBook()
Dim sourceFolder As String
Dim sourceFile As String
Dim sourceBook As Workbook
Dim sourceSheet As String
Dim sourceRows As Long
Dim sourceCols As Long
Dim TargetBook As Workbook
Dim targetSheet As String
Dim targetRows As Long
Dim maxPossibleRows As Long
Dim startRow As Integer
sourceSheet = "Sheet1"
targetSheet = "Consolidated"
sourceFolder = InputBox("Enter the full path where files exists", "Excel Files Path")
sourceFolder = Trim(sourceFolder)
If Right(sourceFolder, 1) <> "\" Then sourceFolder = sourceFolder & "\"
sourceFile = Dir(sourceFolder & "*.xls*")
If (sourceFile = vbNullString) Then
MsgBox "No *.xls* files found at location [" & sourceFile & "]", vbInformation, "Error"
GoTo consolidateIntoOneBook_Exit
End If
On Error GoTo consolidateIntoOneBook_Err
Application.EnableEvents = False
Application.ScreenUpdating = False
Set TargetBook = Workbooks.Add
TargetBook.Sheets("Sheet1").Name = targetSheet
maxPossibleRows = TargetBook.Sheets(targetSheet).Rows.Count
startRow = 1
targetRows = 0
Do Until sourceFile = vbNullString
Set sourceBook = Workbooks.Open(Filename:=sourceFolder & sourceFile)
With sourceBook.Sheets(sourceSheet)
sourceRows = getItemLocation("*", .Cells)
sourceCols = getItemLocation("*", .Cells, bFindRow:=False)
If (targetRows + (sourceRows - startRow) + 1 > maxPossibleRows) Then
MsgBox "Copying data from workbook [" & sourceFile & "] will exceed excel imposed limitation of " & maxPossibleRows & " rows."
GoTo consolidateIntoOneBook_Exit
End If
Application.CutCopyMode = False
.Range(.Cells(startRow, 1), .Cells(sourceRows, sourceCols)).Copy
TargetBook.Sheets(targetSheet).Cells(targetRows + 1, 1).PasteSpecial
targetRows = targetRows + sourceRows - startRow + 1
Application.CutCopyMode = False
startRow = 2
End With
sourceBook.Close False
sourceFile = Dir()
Loop
consolidateIntoOneBook_Exit:
Application.EnableEvents = True
Application.ScreenUpdating = True
Exit Sub
consolidateIntoOneBook_Err:
MsgBox "Error Occured while processing request. " & Err.Description, vbCritical, "Critical Error"
GoTo consolidateIntoOneBook_Exit
End Sub
Public Function getItemLocation(sLookFor As String, _
rngSearch As Range, _
Optional bFullString As Boolean = True, _
Optional bLastOccurance As Boolean = True, _
Optional bFindRow As Boolean = True) As Long
'find the first/last row/column within a range for a specific string
Dim Cell As Range
Dim iLookAt As Integer
Dim iSearchDir As Integer
Dim iSearchOdr As Integer
If (bFullString) _
Then
iLookAt = xlWhole
Else
iLookAt = xlPart
End If
If (bLastOccurance) _
Then
iSearchDir = xlPrevious
Else
iSearchDir = xlNext
End If
If Not (bFindRow) _
Then
iSearchOdr = xlByColumns
Else
iSearchOdr = xlByRows
End If
With rngSearch
If (bLastOccurance) _
Then
Set Cell = .Find(sLookFor, .Cells(1, 1), xlValues, iLookAt, iSearchOdr, iSearchDir)
Else
Set Cell = .Find(sLookFor, .Cells(.Rows.Count, .Columns.Count), xlValues, iLookAt, iSearchOdr, iSearchDir)
End If
End With
If Cell Is Nothing Then
getItemLocation = 0
ElseIf Not (bFindRow) _
Then
getItemLocation = Cell.Column
Else
getItemLocation = Cell.Row
End If
Set Cell = Nothing
End Function
rizvisa1
Posts
4478
Registration date
Thursday January 28, 2010
Status
Contributor
Last seen
May 5, 2022
766
Jan 5, 2013 at 10:59 AM
Jan 5, 2013 at 10:59 AM
Can a mod. restore the msg that seems to be a victim of sanitization
seekermay
Posts
28
Registration date
Wednesday January 27, 2010
Status
Member
Last seen
May 27, 2013
5
Jan 8, 2013 at 07:39 AM
Jan 8, 2013 at 07:39 AM
thanks @rizvisa1. can you pls report the message.
seekermay
Posts
28
Registration date
Wednesday January 27, 2010
Status
Member
Last seen
May 27, 2013
5
Jan 8, 2013 at 07:39 AM
Jan 8, 2013 at 07:39 AM
sorry its repost message.
rizvisa1
Posts
4478
Registration date
Thursday January 28, 2010
Status
Contributor
Last seen
May 5, 2022
766
Jan 8, 2013 at 07:30 PM
Jan 8, 2013 at 07:30 PM
thanks Ambucias for restoring the msg