VBAでシートの大量コピー
VBAでシートを大量にコピーする場合は、下記の方法を勧めます。
Step1. つぎのサブプロシージャを定義する。
たくさんコピーしたいMicrosoft Excel オブジェクトの中で、
つぎのサブプロシージャを定義してあげます。
Microsoft Excel オブジェクト
Sheet1
Option Explicit Sub CopyForManyTimes(ByVal after As Worksheet) ' ①新規シートの挿入 Dim NewSheet As Worksheet Set NewSheet = ThisWorkbook.Worksheets.Add(after:=after) ' ②データのコピー Me.Activate Me.Cells.Select Selection.Copy ' &ペースト NewSheet.Activate ActiveSheet.Paste End Sub
Step2. 標準モジュールで呼び出す。
Sheet1 で定義してあげたとすると、つぎのように呼び出せます。
Option Explicit Sub main() ' 呼び出し方1 Sheet1.CopyForManyTimes after:=Worksheets(Worksheets.Count) ' 呼び出し方2 Call Sheet1.CopyForManyTimes(after:=Worksheets(Worksheets.Count)) End Sub
これを勧める理由
これは、Worksheet オブジェクトの Copy メソッドの場合、
30枚前後しかコピーできないうえ、処理そのものも重い為。
ちなみにExcel再起動すれば、再度、30枚以降もコピーできるけど、
それは面倒だしね(´・ω・`)
Sheet1.Copy after:=Worksheets(Worksheets.Count)