VBAでExcelのシートを複製する方法

  • これを共有
Michael Brown

Excelでシートを複製するためのマクロ集です。セルの値をもとにしたコピーと名前の変更、複数のシートのコピー、アクティブなワークシートを開かずに別のファイルにコピーする、などのマクロが紹介されています。

Excelでシートを手動でコピーするのは、1回や2回ならすぐにできます。 複数のシートを何度も複製するのは、退屈で時間がかかります。 このページでは、この作業を自動化する便利なマクロをいくつか紹介します。

    Excel VBAでシートを新しいワークブックにコピーする

    この最もシンプルな一行マクロは、その名の通り、アクティブなシートを新しいワークブックにコピーします。

    Public Sub CopySheetToNewWorkbook() activeSheet.Copy End Sub

    VBAでExcelの複数シートをコピーする

    アクティブなワークブックから新しいワークブックに複数のシートをコピーしたい場合は、対象のワークシートをすべて選択して、このマクロを実行します。

    Public Sub CopySelectedSheets() ActiveWindow.SelectedSheets.Copy End Sub

    Excel 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は、コピーしたいシートの名前に置き換えてください。
    Public Sub CopySheetFromClosedWorkbook( Dim sourceBook As Workbook Application.ScreenUpdating = False Set sourceBook = Workbooks.Open ( "C:\UsersXXXDocumentsTarget_Book.xlsx" ) sourceBook.Sheets( "Sheet1" ).Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) sourceBook.Close Application.ScreenUpdating = True End Sub

    シートを複数回複製する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コードを自分のブックに挿入するか、私たちのサンプルワークブックからマクロを実行することができます。

    ワークブックにマクロを追加する方法

    ワークブックにコードを挿入するには、次の手順を実行します。

    1. コピーしたいワークシートを開きます。
    2. Alt + F11キーを押して、Visual Basic Editorを開きます。
    3. 左ペインで、右クリック 本作品 をクリックします。 インサート > モジュール .
    4. コードをコードウィンドウに貼り付けます。
    5. F5キーを押して、マクロを実行します。

    詳しい手順については、「ExcelでVBAコードを挿入する方法」をご覧ください。

    サンプルワークブックからマクロを実行する方法

    または、「Excelシートの複製」のサンプルワークブックをダウンロードし、そこからコードを実行することもできます。

    サンプルワークブックには、以下のマクロが含まれています。

    CopySheetToNewWorkbook(コピーシート・トゥ・ニューワークブック - は、現在のワークシートを新しいワークブックにコピーします。

    CopySelectedSheets - は、選択した複数のシートを新しいワークブックにコピーします。

    CopySheetToBeginningAnotherWorkbook(コピーシート・トゥ・ビギニング・アナザー・ワークブック - は、アクティブなシートを別のワークブックの先頭にコピーします。

    CopySheetToEndAnotherWorkbook(コピーシート・トゥ・エンド・アナザー・ワークブック - は、アクティブなシートを他のExcelファイルの末尾にコピーします。

    CopySheetAndRename - 現在のシートを複製し、ユーザが指定したとおりに名前を変更し、そのコピーを現在のワークブックの他のすべてのシートの後に配置します。

    CopySheetAndRenamePredefined(コピーシートとリネーム)。 - アクティブなシートを複製し、ハードコードされた名前を付けて、現在のワークブックの末尾に配置します。

    CopySheetAndRenameByCell(コピーシートアンドリネームバイセル - アクティブシートのコピーを作成し、選択されたセルの値に基づいて名前を変更します。

    CopySheetAndRenameByCell2 - は、アクティブなシートをコピーし、ハードコードされたセルアドレスに基づいてその名前を変更します。

    CopySheetToClosedWorkbook(コピーシート・トゥ・クローズド・ワークブック - は、閉じたワークブックにシートをコピーすることができます。

    CopySheetFromClosedWorkbook(コピーシート フロム クローズド ワークブック - は、他のExcelファイルを開かずに、そのシートをコピーすることができます。

    DuplicateSheetMultipleTimes(デュプリケートシートマルチプルタイムズ - は、Excelのシートを複数回複製することができます。

    Excelでマクロを実行するには、次のようにするだけです。

    1. ダウンロードしたワークブックを開き、プロンプトが表示されたらコンテンツを有効にします。
    2. 自分のワークブックを開き、コピーしたいシートに移動します。
    3. ワークシートで、Alt + F8 を押し、目的のマクロを選択し、クリックします。 実行 .

    以上、VBAでExcelのシートを複製する方法でした。 読んでいただきありがとうございました!また来週のブログでお会いしましょう。

    Michael Brown は、ソフトウェア ツールを使用して複雑なプロセスを簡素化することに情熱を注ぐ熱心なテクノロジー愛好家です。テクノロジー業界で 10 年以上の経験があり、Microsoft Excel と Outlook、さらに Google Sheets と Docs のスキルを磨いてきました。 Michael のブログは、彼の知識と専門知識を他の人と共有することに特化しており、生産性と効率を向上させるためのわかりやすいヒントとチュートリアルを提供しています。経験豊富なプロフェッショナルであろうと初心者であろうと、Michael のブログでは、これらの重要なソフトウェア ツールを最大限に活用するための貴重な洞察と実践的なアドバイスを提供しています。