Getting Run time 1004 error in code
Posted
by
krishna123
on Super User
See other posts from Super User
or by krishna123
Published on 2012-10-01T15:21:36Z
Indexed on
2012/10/01
15:42 UTC
Read the original article
Hit count: 183
microsoft-excel
|vba
I tried the code provided by vba express for combining sheet, while execution it is displaying Run Time error 1004: Application Defined or Object Defined Error:
My Scenario is: I have a Excel, in that I have first sheet "Connection" and after it I have Sheet1, Sheet2 and so on. I am combining all sheets except Sheet"Conection" by saying start with sheet2.
I tried following line of code to exclude "Connection" sheet: If Not Sheet.Name = "Connection" then but it did not work.
Whatever the sheets I have in some of them I have large data in some cells.
Here is the code which I am using: I have highlighted the line
Sub CopyFromWorksheets() Dim wrk As Workbook 'Workbook object - Always good to work with object variables Dim sht As Worksheet 'Object for handling worksheets in loop Dim trg As Worksheet 'Master Worksheet Dim rng As Range 'Range object Dim colCount As Integer 'Column count in tables in the worksheets
Set wrk = ActiveWorkbook 'Working in active workbook
For Each sht In wrk.Worksheets
If sht.Name = "Master" Then
sht.Delete
Exit Sub
End If
Next sht
'We don't want screen updating
Application.ScreenUpdating = False
'trg.SaveAs "C:\temp\CPReport1.xls"
'Add new worksheet as the last worksheet
Set trg = wrk.Worksheets.Add(After:=wrk.Worksheets(wrk.Worksheets.Count))
'Rename the new worksheet
trg.Name = "Master"
'Get column headers from the first worksheet
'Column count first
Set sht = wrk.Worksheets(2)
colCount = sht.Cells(1, 255).End(xlToLeft).Column
'Now retrieve headers, no copy&paste needed
With trg.Cells(1, 1).Resize(1, colCount)
.Value = sht.Cells(1, 1).Resize(1, colCount).Value
'Set font as bold
.Font.Bold = True
End With
trg.SaveAs "C:\temp\CPReport1.xls"
'We can start loop
'Skip Sheet - Connection
If Not sht.Name = "Connection" Then
For Each sht In wrk.Worksheets
'If worksheet in loop is the last one, stop execution (it is Master worksheet)
If sht.Index = wrk.Worksheets.Count Then
Exit For
End If
'Data range in worksheet - starts from second row as first rows are the header rows in all worksheets
Set rng = sht.Range(sht.Cells(2, 1), sht.Cells(65536, 1).End(xlUp).Resize(, colCount))
'Put data into the Master worksheet
'----------------- Error in below line --------------------------------------------------
trg.Cells(65536, 1).End(xlUp).Offset(1).Resize(rng.Rows.Count, rng.Columns.Count).Value = rng.Value
'----------------------------------------------------------------------------------------
Next sht
End If
'Fit the columns in Master worksheet
trg.Columns.AutoFit
'Dim dest, destyfile
'dest = "E:\Test_Merge\"
'destyfile = dest & "_" & trg.Name
'trg.SaveAs (destyfile)
'Screen updating should be activated
Application.ScreenUpdating = True
End Sub
© Super User or respective owner