シートをコピーする
VBAでシートをコピーする方法について以下の項目を見ていきます。
1. 元シートの前または後にシートをコピーする
2. 全シートの左端または右端にシートをコピーする
3. シートをコピーした後に名前を変更する
4. 新しいブックにシートをコピー
5.シートを既存ブックにコピーする
6. 複数のシートをコピーする
-
元シートの前または後にシートをコピーする
シートのコピーはCopyメソッドを使います。
Copyメソッドの引数Beforeに既存シートを指定すると
指定したシートの前にコピーされます。
Copyメソッドの引数Afterに既存シートを指定すると
指定したシートの後ろにコピーされます。
引数Before,Afterはどちらか一方のみ指定します。次のコードはコピー元シートの前,後ろにシートをコピーします。
同じブック内でシートをコピーするコード: Sub macro20200609a()
'コピー元シートの前にシートをコピーするSheets("Sheet1").Copy Before:=Sheets("Sheet1")
End Sub
Sub macro20200609b()
'コピー元シートの後ろにシートをコピーするSheets("Sheet1").Copy After:=Sheets("Sheet1")
End Sub
-
全シートの左端または右端にシートをコピーする
ブックに含まれるすべてのシートは
Sheetsオブジェクトに格納されています。
シートは左端からSheet(1),Sheet(2),…で参照できます。
すべてのシートの数はSheets.countで取得できます。左端のシートはSheet(1),
右端のシートはSheets(Sheets.count)で参照できます。次のコードは左端または右端にシートをコピーします。
左端または右端にシートをコピーするコード: Sub macro20200609c()
'シートを左端にコピーするSheets("Sheet1").Copy Before:=Sheets(1)
End Sub
Sub macro20200609d()
'シートを右端にコピーするSheets("Sheet1").Copy After:=Sheets(Sheets.count)
End Sub
-
シートをコピーした後に名前を変更する
シートをコピーすると通常
コピー元のシート名に(1),(2),…などと数字が付加されます。コピーしたシートの名前を付けたい場合は
Nameプロパティで設定します。次のコードはシートをコピー後
コピーしたシートの名前を変更します。シートをコピー後,コピーしたシートの名前を変更するコード: Sub macro20200609e()
'シートをコピーするDim sh As Worksheet
Sheets("Sheet1").Copy Before:=Sheets("Sheet1")
Set sh = ActiveSheet
sh.Name = "新しいシート名"End Sub
-
新しいブックにシートをコピー
CopyメソッドのBefore,After引数を指定しないと
新しいブックが作成されてシートがコピーされます。次のコードは
新しいブック(NewBook1.xlsx)にシートをコピーして
ブックに名前を付けて閉じます。新しいブックにシートをコピーするコード: Sub macro20200609f()
'シートを新しいブックにコピーするDim wb As Workbook
Sheets("Sheet1").Copy
Set wb = ActiveWorkbook
wb.SaveAs Filename:="C:\Users\username\Documents\NewBook1.xlsx"
wb.CloseEnd Sub
-
シートを既存ブックにコピーする
次のコードは
既存ブック(Book1.xlsx)を開いてシートをコピーして,
コピー後にコピー先ブックを保存して閉じます。シートを既存ブックにコピーするコード: Sub macro20200609g()
'シートを既存ブックにコピーするDim wb1 As Workbook 'コピー元
Dim wb2 As Workbook 'コピー先
Set wb1 = ActiveWorkbook
Workbooks.Open Filename:="C:\Users\username\Documents\Book1.xlsx"
Set wb2 = ActiveWorkbook
wb1.Sheets("Sheet1").Copy Before:=wb2.Sheets(1)
wb2.Close SaveChanges:=TrueEnd Sub
-
複数のシートをコピーする
複数のシートを指定する場合は
Array関数を使用します。シート名"Sheet5"を指定する場合に
Sheets("Sheet5")としました。
例えば,
シート名が"Sheet1", "Sheet2", "Sheet4"の
3枚のシートを指定したい場合
Sheets(Array("Sheet1", "Sheet2", "Sheet4"))のようにします。複数のシートをコピーするコード: Sub macro20200609h()
'複数のシートをコピーするDim wb1 As Workbook 'コピー元
Dim wb2 As Workbook 'コピー先
Dim sh_copy As Sheets
Set wb1 = ActiveWorkbook
Workbooks.Open Filename:="C:\Users\username\Documents\Book1.xlsx"
Set wb2 = ActiveWorkbook
Set sh_copy = wb1.Sheets(Array("Sheet1", "Sheet2", "Sheet3"))
sh_copy.Copy Before:=wb2.Sheets(1)
wb2.Close SaveChanges:=TrueEnd Sub
使用Ver:Win10, Excel For Office365
| 固定リンク
この記事へのコメントは終了しました。

コメント