シートを結合するために VBA Express が提供するコードを試しましたが、実行中にランタイム エラー 1004: アプリケーション定義またはオブジェクト定義エラー: が表示されました。
私のシナリオは次のとおりです。最初のシート「接続」があり、その後にSheet1、Sheet2などがあります。シート「接続」を除くすべてのシートを、シート2から開始すると言って結合しています。
「接続」シートを除外するために次のコード行を試しまし
If Not Sheet.Name = "Connection" then
たが、うまくいきませんでした。
一部のシートにあるものは何でも、一部のセルに大きなデータがあります。
私が使用しているコードは次のとおりです。行を強調表示しました
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