エクセルVBAで全シートをコピーする方法

エクセルファイルの全シートを同じファイルに、または別のブックにコピーしたい時、シートの数が多いと面倒です。似ているシート名が複数あると、コピーを忘れてしまう事もあります。全てのシートをコピーする場合、確実に失敗することなくコピーするには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で名前を変更してシートをコピーする!