
複数のシートにデータをエクスポートするプログラムを使用しており、これらすべてを同じシートの上下に配置する必要があります。
ワークシートについて - ワークシートの名前はエクスポートごとに異なるため、100 を超える異なるシートが存在する場合があるため、これを定義する必要はありません。
ワークシート内 - さまざまな行と列のデータです (空白の行までメイン シートの次の使用可能な空白行にコピーする必要があります)。
すべてのデータをコピーする必要があるワークシート - 最初は空白ですが、他のワークシートからの行のコピーに基づいてすべてのデータを重ね合わせる必要があります。(必要に応じて、定義済みの名前を付けることができます)
私は VBA の初心者なので、上記の説明が役立つことを願っています。
現在の VBA が動作しません:
Sub SheetLoopPasteData()
Dim ws As Worksheet
Dim wsSheet As Worksheet
Set wsSheet = Sheets("Sheet2")
For Each ws In Worksheets
ws.Activate
variable = Cells(Rows.Count, 1).End(xlUp).Row
Rows("1:" & variable).Copy _
Destination:=wsSheet.Range("A" & (wsSheet.Range("A" & wsSheet.Rows.Count).End(xlDown).Row + 1))
Next
End Sub
答え1
VBA (マクロ) を使用すると、すべてのワークシートから使用範囲を新しいワークシートにコピーすることができ、まさにデータ統合と同じように機能すると思います。
Sub CombineData()
Dim I As Long
Dim xRg As Range
On Error Resume Next
Worksheets.Add Sheets(1)
ActiveSheet.Name = "MasterSheet"
For I = 2 To Sheets.Count
Set xRg = Sheets(1).UsedRange
If I > 2 Then
Set xRg = Sheets(1).Cells(xRg.Rows.Count + 1, 1)
End If
Sheets(I).Activate
ActiveSheet.UsedRange.Copy xRg
Next
End Sub
使い方:
- コピー&ペーストこのコードをモジュールとして保存します。
- マクロは既存のワークブックに次の名前の新しいシートを作成します。マスターシート編集可能です。
- 先頭行から最後までデータをコピーする代わりに、使用範囲この方法は、あらゆる更新に対応するためです。
答え2
これは非常に良いのですが、特定の範囲に対応する必要があります。これは可能でしょうか?
VBA (マクロ) を使用すると、すべてのワークシートから使用範囲を新しいワークシートにコピーすることができ、まさにデータ統合と同じように機能すると思います。
サブ CombineData()
Dim I As Long
Dim xRg As Range
On Error Resume Next
Worksheets.Add Sheets(1)
ActiveSheet.Name = "MasterSheet"
I = 2 の場合、Sheets.Count に xRg = Sheets(1).UsedRange を設定します。
If I > 2 Then
Set xRg = Sheets(1).Cells(xRg.Rows.Count + 1, 1)
End If
Sheets(I).Activate
ActiveSheet.UsedRange.Copy xRg
Next
End Sub 仕組み:
このコードをコピーしてモジュールとして貼り付けます。マクロは、既存のワークブックに MasterSheet という名前の新しいシートを作成します。このシートは編集可能です。先頭行から最後までデータをコピーする代わりに、すべての更新に対応する UsedRange メソッドを使用しました。