>・各シートはMAXで100行くらいです。シートごとに違います。
>・エクセルのバージョンは2003です。
シートが40枚くらいならMAXで40,000行、Excel2003で扱える行数が65,536行ですからギリギリOK位の感じです。
>・行数が一定なら、簡単です。:行数は一定ではないです。
>・「絶対に空白でない列」があるならば:列は全て空白ではないです。
>End(xlUp)を使ってやると思うのですが。。。
お察しの通りEnd(xlUp)が便利です
Cells(Rows.Count, "A").End(xlUp).Row
を使って各シートの最終行を拾います。
[A65536].End(xlUp).Row
でもいいのですが、Excel2007対応のためです。(いずれにせよ一番下までデータを入れることはないというのが前提です。)
コピー先の行の取得も同様に行います。
後は各シートをでコピーして、コピー先の一番下に貼り付けるだけです。
以下は、同じフォルダにある”Book2”を開き、自分のシートに順次コピーするプログラムのサンプルです。
1行目はタイトル行と想定して、2行目からコピーします。
一様サンプルは示しましたが、利用は「自己責任」でお願いします。
このプログラムを使用して損害が生じても、私は一切の責任を負いません(悪意のあるプログラムではないのは、解読すれば分かると思います。結果が思い通りにならなくて損害が生じた場合でも責任は負わないという意味です)。
Sub シート統合()
Dim SourceBook As Workbook
Dim i As Long
Dim LastRow As Long
ThisWorkbook.Activate
Worksheets(1).Select
Cells.Clear
Set SourceBook = Workbooks.Open(ThisWorkbook.Path & "\Book1.xls")
For i = 1 To SourceBook.Worksheets.Count
With SourceBook.Worksheets(i)
.Activate
LastRow = .Cells(Rows.Count, "A").End(xlUp).Row
.Rows("2:" & LastRow).Copy ThisWorkbook.Sheets(1).Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
End With
Next i
ThisWorkbook.Activate
End Sub
補足
・行数が一定なら、簡単です。:行数は一定ではないです。 ・「絶対に空白でない列」があるならば:列は全て空白ではないです。 ・各シートはMAXで100行くらいです。シートごとに違います。 ・エクセルのバージョンは2003です。 End(xlUp)を使ってやると思うのですが。。。 宜しくお願い致します。 目黒