目次
Excelでシートを複製するためのマクロ集です。セルの値をもとにしたコピーと名前の変更、複数のシートのコピー、アクティブなワークシートを開かずに別のファイルにコピーする、などのマクロが紹介されています。
Excelでシートを手動でコピーするのは、1回や2回ならすぐにできます。 複数のシートを何度も複製するのは、退屈で時間がかかります。 このページでは、この作業を自動化する便利なマクロをいくつか紹介します。
Excel VBAでシートを新しいワークブックにコピーする
この最もシンプルな一行マクロは、その名の通り、アクティブなシートを新しいワークブックにコピーします。
Public Sub CopySheetToNewWorkbook() activeSheet.Copy End SubVBAでExcelの複数シートをコピーする
アクティブなワークブックから新しいワークブックに複数のシートをコピーしたい場合は、対象のワークシートをすべて選択して、このマクロを実行します。
Public Sub CopySelectedSheets() ActiveWindow.SelectedSheets.Copy End SubExcel VBAでシートを別のワークブックにコピーする
コピーしたシートを挿入する場所に応じて、以下のいずれかのマクロを使用します。
シートを別のワークブックの先頭にコピーする
このマクロは、アクティブなシートをコピー先ファイルの他のすべてのワークシートの前にコピーします。 書籍1 別のファイルにコピーする場合は、"Book1.xlsx "をコピー先のワークブックのフルネームに置き換えてください。
Public Sub CopySheetToBeginningAnotherWorkbook() activeSheet.Copy Before:=Workbooks( "Book1.xlsx" ).Sheets(1) End Subシートを別のワークブックの末尾にコピーする
このコードでは、アクティブなワークシートを複製し、その複製を 書籍1 この場合も、「Book1.xlsx」を保存先のワークブックの名前に置き換えることを忘れないでください。
Public Sub CopySheetToEndAnotherWorkbook() activeSheet.Copy After:=Workbooks( "Book1.xlsx" ).Sheets(Workbooks( "Book1.xlsx" ).Worksheets.Count) End Sub注意:マクロを動作させるためには、対象のワークブックがハードディスクまたはネットワーク上に保存されている必要があります。
選択したワークブックにシートをコピーする
現在のシートを開いている任意のワークブックにコピーできるようにするには、ユーザーフォーム(名前は ユーザーフォーム1 )を使用しています。 リストボックス コントロール( リストボックス1という名前 )と2つのボタンがあります。
次に、フォームをダブルクリックし、コードウィンドウに以下のコードを貼り付けます。
Public SelectedWorkbook As String Private Sub UserForm_Initialize() SelectedWorkbook = "" ListBox1.Clear For Each wbk In Application.Workbooks ListBox1.AddItem (wbk.Name) Next End Sub Private Sub CommandButton1_Click() If ListBox1.ListIndex> -1 Then SelectedWorkbook = ListBox1.List(ListBox1.ListIndex) End If Me.Hide End Sub Private Sub CommandButton2_Click() SelectedWorkbook = "" Me.Hide Endサブユーザーフォームを設置した状態で、以下のいずれかのマクロを使用すると、アクティブなシートを任意のワークブックにコピーすることができます。
コピーシートは 選択したワークブックの先頭 :
Public Sub CopySheetToBeginningAnotherWorkbook() Load UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Then activeSheet.Copy Before:=Workbooks(UserForm1.SelectedWorkbook).Sheets(1) End If UserForm1 を Unload End Subコピーシートは 選択したワークブックの終端 :
Public Sub CopySheetToEndAnotherWorkbook() Load UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Then activeSheet.Copy After:=Workbooks( _ UserForm1.SelectedWorkbook).Sheets( _ Workbooks(UserForm1.SelectedWorkbook). _ Worksheets.Count) End If Unload UserForm1 End Sub.Excelで実行すると、現在開いているすべてのワークブックのリストが表示されるので、必要なものを選択して「OK」をクリックします。
シートをコピーして名前を変更するExcelマクロ
Excelでシートをコピーすると、レプリカには次のようなデフォルトの書式で名前が付けられます。 Sheet1 (2) 以下のマクロを使えば、デフォルト名を手動で変更する手間を省くことができます。
このコードは、アクティブなワークシートを複製し、そのコピーに「テストシート」という名前を付け(他の名前に置き換えてもかまいません)、コピーしたシートを現在のワークブックの末尾に配置します。
Public Sub CopySheetAndRenamePredefined() activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = "テストシート" End Subを可能にするため。 コピーしたシートの名前を指定する このコードを使用してください。
Public Sub CopySheetAndRename() Dim newName As String On Error Resume Next newName = InputBox("Enter name for copied worksheet" ) If newName "" Then activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End Sub実行すると、以下のような入力ボックスが表示されますので、任意の名前を入力してOKを押してください。
シートをコピーし、セルの値に基づいて名前を変更するExcelマクロ
例えば、列のヘッダーなど、特定のセルの値でコピーに名前を付ける方が便利な場合もあります。 この場合は、上記のコードに 現在選択されているセル 前の例と同様に、コピーはアクティブなワークブックの末尾に配置されます。
一番難しいのは、マクロを実行する前に、ユーザーに常に正しいセルを選択させることです :)
Public Sub CopySheetAndRenameByCell() Dim newName As String On Error Resume Next newName = InputBox( "Enter name for copied worksheet" , "Copy worksheet" , ActiveCell.Value) If newName "" Then activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End Subまた、以下の方法もあります。 セルのアドレスをハードコードする コピーされたワークシートに名前を付けるには、A1 を適切なセル参照に置き換えます。
Public Sub CopySheetAndRenameByCell2() Dim wks As Worksheet Set wks = activeSheet activeSheet.Copy After:=Worksheets(Count) If wks.Range("A1" ).Value "" Then On Error Resume Next activeSheet.Name = wks.Range("A1" ).Value End If wks.Activate End Subワークシートを閉じたワークブックにコピーするマクロ
アクティブシートを閉じたワークブックの最後にコピーするマクロです。 別のワークブックの名前はコードで指定しません。マクロは、Windows標準のエクスプローラウィンドウを開き、任意の宛先ファイルを選択できるようにします。
ファイルを選択し オープン アクティブなシートをコピーして、対象のワークブックを自動的に閉じます。
Public Sub CopySheetToClosedWorkbook() Dim fileName Dim closedBook As Workbook Dim currentSheet As Worksheet fileName = Application.GetOpenFilename( "Excel Files (*.xlsx), *.xlsx" ) If fileName False Then Application.ScreenUpdating = False Set currentSheet = Application.activeSheet Set closedBook = Workbooks. Open (fileName) currentSheet.Copy After:=closedBook.Sheets(closedBook.Worksheets.Count)closedBook.Close ( True ) Application.ScreenUpdating = True End If End Sub別のワークブックからシートを開かずにコピーするExcel VBA
他のExcelファイルを開かずにワークシートをコピーするマクロです。 コピーされたシートは、現在のワークブックの末尾に挿入されます。
ただ、コードにいくつかの置換をすることを忘れないでください。
- C:\UsersXXX³³³³Documents³³Target_Book.xlsx は、シートをコピーするワークブックの実際のパスと名前に変更する必要があります。
- Sheet1は、コピーしたいシートの名前に置き換えてください。
シートを複数回複製するExcel VBA
同じデータセットで異なる計算式を試すために、同じシートを複数回複製する必要がある場合があります。 これは、以下のマクロで簡単に行うことができます。
Public Sub DuplicateSheetMultipleTimes() Dim n As Integer On Error Resume Next n = InputBox("How many copies of active sheet do you want to make?" ) If n>= 1 Then For numtimes = 1 To n activeSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count) Next End If End Sub元のシートを開き、マクロを実行し、アクティブシートのコピー数を指定し よっしゃー :
VBAでExcelのシートを複製する方法
上記のマクロを使用してExcelのシートをコピーするには、VBAコードを自分のブックに挿入するか、私たちのサンプルワークブックからマクロを実行することができます。
ワークブックにマクロを追加する方法
ワークブックにコードを挿入するには、次の手順を実行します。
- コピーしたいワークシートを開きます。
- Alt + F11キーを押して、Visual Basic Editorを開きます。
- 左ペインで、右クリック 本作品 をクリックします。 インサート > モジュール .
- コードをコードウィンドウに貼り付けます。
- F5キーを押して、マクロを実行します。
詳しい手順については、「ExcelでVBAコードを挿入する方法」をご覧ください。
サンプルワークブックからマクロを実行する方法
または、「Excelシートの複製」のサンプルワークブックをダウンロードし、そこからコードを実行することもできます。
サンプルワークブックには、以下のマクロが含まれています。
CopySheetToNewWorkbook(コピーシート・トゥ・ニューワークブック - は、現在のワークシートを新しいワークブックにコピーします。
CopySelectedSheets - は、選択した複数のシートを新しいワークブックにコピーします。
CopySheetToBeginningAnotherWorkbook(コピーシート・トゥ・ビギニング・アナザー・ワークブック - は、アクティブなシートを別のワークブックの先頭にコピーします。
CopySheetToEndAnotherWorkbook(コピーシート・トゥ・エンド・アナザー・ワークブック - は、アクティブなシートを他のExcelファイルの末尾にコピーします。
CopySheetAndRename - 現在のシートを複製し、ユーザが指定したとおりに名前を変更し、そのコピーを現在のワークブックの他のすべてのシートの後に配置します。
CopySheetAndRenamePredefined(コピーシートとリネーム)。 - アクティブなシートを複製し、ハードコードされた名前を付けて、現在のワークブックの末尾に配置します。
CopySheetAndRenameByCell(コピーシートアンドリネームバイセル - アクティブシートのコピーを作成し、選択されたセルの値に基づいて名前を変更します。
CopySheetAndRenameByCell2 - は、アクティブなシートをコピーし、ハードコードされたセルアドレスに基づいてその名前を変更します。
CopySheetToClosedWorkbook(コピーシート・トゥ・クローズド・ワークブック - は、閉じたワークブックにシートをコピーすることができます。
CopySheetFromClosedWorkbook(コピーシート フロム クローズド ワークブック - は、他のExcelファイルを開かずに、そのシートをコピーすることができます。
DuplicateSheetMultipleTimes(デュプリケートシートマルチプルタイムズ - は、Excelのシートを複数回複製することができます。
Excelでマクロを実行するには、次のようにするだけです。
- ダウンロードしたワークブックを開き、プロンプトが表示されたらコンテンツを有効にします。
- 自分のワークブックを開き、コピーしたいシートに移動します。
- ワークシートで、Alt + F8 を押し、目的のマクロを選択し、クリックします。 実行 .
以上、VBAでExcelのシートを複製する方法でした。 読んでいただきありがとうございました!また来週のブログでお会いしましょう。