VBA:ワークシートのコピー

目次

VBAでのワークシートコピーの基本

VBAでワークシートをコピーする基本的な方法について説明します。

① シートをワークブックの末尾にコピーする方法

ワークシートをワークブックの末尾にコピーする場合、ActiveSheet.Copy after:=Sheets(Sheets.Count) を使います。これにより、現在アクティブなシートがワークブックの最後にコピーされます。Sheets.Count はワークブック内のシート数を示しており、これを after 引数に指定することで、シートの最後の位置を明示しています。

② シートを新規ブックにコピーする方法

新規ブックにシートをコピーするには、単に .Copy メソッドを使用します。たとえば、ActiveSheet.Copy と記述することで、アクティブなシートが新しいワークブックにコピーされます。引数を指定しない場合、新しいワークブックが自動的に生成され、選択したシートがそこに移動されます。

③ 複数のシートを一度にコピーする方法

複数のシートをまとめてコピーする場合は、Sheets(Array("Sheet1", "Sheet2")).Copy after:=Sheets(Sheets.Count) のように配列を使用します。この方法で、指定された複数のシートがワークブックの末尾にまとめてコピーされます。

④ シートを別のブックにコピーする方法

別のブックにシートをコピーする際には、Worksheets("Sheet1").Copy After:=Workbooks("Book2").Worksheets(1) のように記述します。これにより、”Sheet1″ が “Book2” の最初のシートの後にコピーされます。コピー先のブックは事前に開いておく必要があります。

⑤ セルの値のみをコピーする方法

セルの値のみをコピーするには、Range オブジェクトの Value プロパティを使います。例えば、Worksheets("Sheet1").Range("A1:B10").Value = Worksheets("Sheet2").Range("A1:B10").Value とすることで、”Sheet1″ の A1:B10 の範囲の値を “Sheet2” の同じ範囲にコピーします。

VBAでワークシートコピーの応用

VBAでワークシートのコピー操作を応用する方法について説明します。

① コピーして名前を変更する方法

シートをコピーした後、その名前を変更するには、ActiveSheet.Name = "新しい名前" と記述します。シートをコピーすると、コピーされたシートがアクティブになるため、ActiveSheet を使用して新しく作成されたシートに名前を付けることができます。

② 同じシートを複数作成する方法

同じシートを複数作成するには、ループを使ってコピー操作を繰り返します。例えば、For i = 1 To 3 Sheets("Sheet1").Copy after:=Sheets(Sheets.Count) とすることで、”Sheet1″ を3回コピーして新しいシートを作成できます。

③ 開いていない別ブックにコピーする方法

開いていないブックにシートをコピーする

するには、まず開いていないブックを Workbooks.Open メソッドで開きます。その後、Worksheets("Sheet1").Copy Before:=Workbooks("新しいブック").Worksheets(1) のようにして、コピー元のシートを開いたブックにコピーします。この方法を使うと、開いていないブックにもシートをコピーすることができます。

④ コピーしたシートをアクティブにする方法

コピー操作後にコピーされたシートをアクティブにするには、コピー後に ActiveSheet を使って操作します。例えば、Sheets("Sheet1").Copy after:=Sheets(Sheets.Count) の後に ActiveSheet を使用すると、コピーされたシートがアクティブになり、そのシートに対して操作を行うことができます。

⑤ コピーと移動の組み合わせ

シートのコピーと移動を組み合わせて使用することで、特定の位置にシートを配置できます。たとえば、Sheets("Sheet1").Copy after:=Sheets("Sheet2") と記述することで、”Sheet1″ を “Sheet2” の後にコピーし、その後で移動させることができます。このようにコピーと移動を組み合わせることで、シートの位置を自由に調整できます。

サンプルコード

アクティブなワークシートを新しいブックにコピー

Sub CopySheetToNewWorkbook()
    ' アクティブなシートを新しいワークブックにコピー
    ActiveSheet.Copy
End Sub

このコードは、現在アクティブなワークシートを新しいワークブックにコピーします。引数を指定しない場合、新しいワークブックが自動的に生成され、選択したシートがそこに移動されます。

特定のワークシートを同じワークブック内でコピー

Sub CopySheetWithinWorkbook()
    ' "Sheet1" を同じワークブック内でコピー
    Sheets("Sheet1").Copy After:=Sheets("Sheet1")
End Sub

このコードは、”Sheet1″ という名前のシートを、同じワークブック内でそのシートの後ろにコピーします。

特定のワークシートを別のワークブックにコピー

Sub CopySheetToAnotherWorkbook()
    ' "Sheet1" を "Book2.xlsx" にコピー
    Sheets("Sheet1").Copy After:=Workbooks("Book2.xlsx").Sheets(1)
End Sub

このコードは、”Sheet1″ という名前のシートを “Book2.xlsx” という別のワークブックにコピーします。この場合、コピー先のワークブックは事前に開いておく必要があります。

シートをコピーして名前を変更

Sub CopyAndRenameSheet()
    ' "Sheet1" をコピーして新しい名前を付ける
    Sheets("Sheet1").Copy After:=Sheets("Sheet1")
    ActiveSheet.Name = "NewSheet"
End Sub

このコードは、”Sheet1″ をコピーし、コピーされた新しいシートに “NewSheet” という名前を付けます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次