エクセルファイルの全シートを同じファイルに、または別のブックにコピーしたい時、シートの数が多いと面倒です。似ているシート名が複数あると、コピーを忘れてしまう事もあります。全てのシートをコピーする場合、確実に失敗することなくコピーするにはVBAを使いましょう。同じシートを重複してコピーすることも防げます。ここでは、エクセルVBAで、同じファイル、別のブック、新規ブックに全シートをコピーする方法を紹介しています。ファイルに全シートをコピーする場合、挿入する位置を指定することもできます。特定のシートを使いまわししている場合は、VBAを使った方が一括でシートのコピーができます。
エクセルVBAでシートをコピーする場合、Copy メソッドを使います。
Copy メソッドの構文
オブジェクト.Copy(Before, After)
エクセルVBAで、ファイルの全シートを同じファイルにコピーしましょう。
同じブックに全シートをコピーする場合、挿入されるシートは、シート名の後ろに、XXXX(2) と (2) が付きます。
目次
ファイルの全シートを指定した位置にコピー
挿入されるシートは、同じシート名がファイルにあるので、全てシート名の後ろに(2) が付きます。
全シートを Sheet2 の前、または後にコピー
全シートを、Sheet2 の後ろにコピーするコードです。
Sub 全シートをシートの後ろにコピー()
ThisWorkbook.Sheets().Copy After:=Worksheets(“Sheet2”)
End Sub
全シートを、Sheet2 の前にコピーするコードです。
Sub 全シートをシートの前にコピー()
ThisWorkbook.Sheets().Copy Before:=Worksheets(“Sheet2”)
End Sub
全シートを先頭にコピーする
全シートを、同じブックの左端にコピーするコードです。
Sub 全シートをブックの左端にコピー()
ThisWorkbook.Sheets().Copy Before:=Sheets(1)
End Sub
全シートを末尾にコピーする
全シートを、同じブックの右端にコピーするコードです。
Sub 全シートをブックの右端にコピー()
ThisWorkbook.Sheets().Copy After:=Sheets(Sheets.Count)
End Sub
エクセルVBAで、ファイルの全シートを別ブックにコピーしましょう。
シートをコピーする別ブックは、開いている必要があります。
ファイルの全シートを別ブックの指定した位置にコピー
全シートを、別のファイルに挿入する位置を指定して、コピーしましょう。
全シートを Book3 の Sheet2 の後ろ、前にコピー
全シートを、「Book3」の「Sheet2」の後ろにコピーするコードです。
Sub 別ブックのXXシート後ろにコピー()
ThisWorkbook.Sheets().Copy After:=Workbooks(“Book3”).Sheets(“Sheet2”)
End Sub
ファイル名が住所録の場合は、次のようになります。
Sub 別ブックのXXシート後ろにコピー()
ThisWorkbook.Sheets().Copy After:=Workbooks(“住所録.xls”).Sheets(“Sheet2”)
End Sub
全シートを、「Book3」の「Sheet2」の前にコピーするコードです。
Sub 別ブックのXXシートの前にコピー()
ThisWorkbook.Sheets().Copy Before:=Workbooks(“Book3”).Sheets(“Sheet2”)
End Sub
シートの先頭にコピー
全シートを、ブック「Book3」の先頭にコピーするコードです。
Sub 別ブックの先頭にコピー()
ThisWorkbook.Sheets().Copy Before:=Workbooks(“Book3”).Sheets(1)
End Sub
シートの末尾にコピー
全シートを、ブック「Book3」の末尾にコピーするコードです。
Sub 全シートを別ブックの末尾にコピー()
ThisWorkbook.Sheets().Copy After:=Workbooks(“Book3”).Sheets(Workbooks(“Book3”).Sheets.Count)
End Sub
新規のファイルに全シートをコピー
新しいブックに、シート全てコピーするコードです。
Sub 全シートを新規ブックにコピー()
ThisWorkbook.Sheets.Copy
End Sub
全シートのコピー
エクセルで全シートをコピーする場合、シートの数が多いと、同じシートをコピーしたり、コピーするシートを抜かしたりすることがあります。定期的にシートのコピーをする場合は、エクセルVBAです。全シートを1つ1つコピーすると、かなり時間がかかってしまします。エクセルVBAで全シートをコピーすると、一発でコピーできます。今まで手作業で行っていたシートのコピーは、エクセルVBAを使ってみましょう。時間が短縮されて、効率よく仕事ができるようになります。
こちらの記事もご覧ください。⇒エクセルVBAで名前を変更してシートをコピーする!