エクセルでシートを別のファイルにコピーする事は、意外と多いのではないでしょうか。定期的に同じシートをコピーする!コピーすることが多い!そんな時に、シートを別ブックにコピーするのは面倒です。そこで、そのような面倒な手間を省くのに、エクセルVBAを使います。簡単に、エクセルVBAで、別ファイルにコピーできます。もちろん、別ブックにコピーする場合、コピーする位置を指定できます。例えばAブックの先頭、または末尾。Aブック、Bシートの後ろ、または前の位置に挿入したい!といった方法を、ここでは紹介しています。新規のブックにコピーする方法も紹介しているので、しっかりとシートのコピーをマスターしましょう。
目次
別のファイルに位置を指定してシートをコピーする
エクセルVBAでシートをコピーする場合、Copy メソッド引数 にBefore、Afterを設定して、ワークシートを指定した場所にコピーすることができます。
Copy メソッドの構文
オブジェクト.Copy(Before, After)
シートをコピーする場合、同じシート名がある場合には、挿入されるシートは、シート名の後ろに、XXXX(2) と (2) が付きます。
Sheet1 をコピーすると、挿入されるシート名は Sheet1 (2) です。
別ブックにシートをコピーする場合は、別ブックは必ず開いている必要があります。
AシートをBシートの後ろ、前にコピー
「Sheet1」を、別ブック「Book3」の「Sheet2」の後ろにコピーするコードです。
別ブック「Book3」は、必ず開いておきましょう。
指定するブックには、拡張子(.xls .xlsx)をつけます。
Sheet1 をコピーすると、別ブックには、シート名 Sheet1 (2) が挿入されます。
Sub シートの後ろにコピー()
Sheets(“Sheet1”).Copy After:=Workbooks(“Book3”).Sheets(“Sheet2”)
End Sub
ブック名が「社員名簿.xls」の場合は、次のようになります。
Sub シートの後ろにコピー()
Sheets(“Sheet1”).Copy After:=Workbooks(“社員名簿.xls”).Sheets(“Sheet2”)
End Sub
「Sheet1」を、ブック「Book3」の「Sheet2」の前にコピーするコードです。
Sub シートの前にコピー()
Sheets(“Sheet1”).Copy Before:=Workbooks(“Book3”).Sheets(“Sheet2”)
End Sub
シートの先頭にコピー
「Sheet1」を、ブック「Book3」の先頭にコピーするコードです。
Sub シートの先頭にコピー()
Sheets(“Sheet1”).Copy Before:=Workbooks(“Book3”).Sheets(1)
End Sub
シートの末尾にコピー
「Sheet1」を、ブック「Book3」の末尾にコピーするコードです。
Sub シートの末尾にコピー()
Sheets(“Sheet1”).Copy After:=Workbooks(“Book3”).Sheets(Workbooks(“Book3”).Sheets.Count)
End Sub
ボタンをクリックして「Sheet1」を、ブック「Book3」の末尾にコピーするコードです。
Private Sub CommandButton1_Click()
Sheets(“Sheet1”).Copy After:=Workbooks(“Book3”).Sheets(Workbooks(“Book3”).Sheets.Count)
End Sub
新規のファイルに、1つのシート、または全シートをコピー
新しいブックに「Sheet1」だけコピーするコードです。
Sub シートを新規ブックにコピー()
Worksheets(“Sheet1”).Copy
End Sub
新しいブックに、全シートをコピーするコードです。
Sub 全ートを新規ブックにコピー()
ThisWorkbook.Sheets.Copy
End Sub
新しいブックに、シート名を変更してコピーするコードです。
変更するシートの名前を「会員名簿」とします。
Sub シートを変更して新規ブックにコピー()
Worksheets(“Sheet1”).Copy
ActiveSheet.Name = “会員名簿”
End Sub
新しいブックには、シート名「会員名簿」がコピーされます。
別ブック、新規ブックにシートをコピー
エクセルで別ブックにシートをコピーする場合、定期的に行う作業だと、VBAでコピーした方が定例の作業が楽になります。エクセルVBAで別ファイルにシートをコピーする時、挿入する位置が決まっている場合でも、位置を指定できるので、シートの位置を変更する必要がありません。挿入するシートを間違えたり、挿入する位置を間違えることもありません。そのようなミスで、修正するのにかなり時間がかかってしまったことはないでしょうか。エクセルVBAで指定すると、そのようなミスも防げます。
こちらの記事もご覧ください。⇒エクセルVBAでシートをコピーする方法!