Cara menduplikasi lembar di Excel dengan VBA

  • Bagikan Ini
Michael Brown

Tutorial ini menyediakan kumpulan makro untuk menduplikasi lembar di Excel: salin dan ganti nama berdasarkan nilai sel, salin beberapa lembar, salin lembar kerja aktif ke file lain tanpa membukanya, dan banyak lagi.

Menyalin sheet secara manual di Excel cukup cepat dan mudah... jika dilakukan hanya sekali atau dua kali. Menduplikasi beberapa sheet berkali-kali membosankan dan memakan waktu. Di halaman ini, Anda akan menemukan beberapa makro yang berguna untuk mengotomatiskan tugas ini.

    Excel VBA untuk menyalin lembar ke buku kerja baru

    Makro satu baris yang paling sederhana ini melakukan persis seperti namanya - menyalin lembar aktif ke buku kerja baru.

    Public Sub CopySheetToNewWorkbook() activeSheet.Copy End Sub

    Salin beberapa lembar di Excel dengan VBA

    Jika Anda ingin menyalin beberapa lembar dari buku kerja aktif ke yang baru, pilih semua lembar kerja yang diinginkan dan jalankan makro ini:

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

    Excel VBA untuk menyalin lembar ke buku kerja lain

    Tergantung di mana Anda ingin menyisipkan lembar yang disalin, gunakan salah satu makro berikut ini.

    Menyalin lembar ke awal buku kerja lain

    Makro ini menyalin lembar aktif sebelum semua lembar kerja lain di file tujuan, Buku1 Untuk menyalin ke file lain, ganti "Book1.xlsx" dengan nama lengkap buku kerja target Anda.

    Public Sub CopySheetToBeginningAnotherWorkbook() activeSheet.Copy Before:=Workbooks( "Book1.xlsx" ).Sheets(1) End Sub

    Menyalin lembar ke akhir buku kerja lain

    Potongan kode ini menduplikasi lembar kerja aktif dan menempatkan salinannya ke akhir Buku1 Sekali lagi, harap ingat untuk mengganti "Book1.xlsx" dengan nama buku kerja tujuan Anda.

    Public Sub CopySheetToEndAnotherWorkbook() activeSheet.Copy After:=Workbooks( "Book1.xlsx" ).Sheets(Workbooks( "Book1.xlsx" ).Worksheets.Count) End Sub

    Catatan. Agar makro berfungsi, buku kerja target harus disimpan di hard drive atau jaringan Anda.

    Salin lembar ke buku kerja yang dipilih

    Untuk bisa menyalin sheet saat ini ke buku kerja yang terbuka, Anda bisa membuat UserForm (bernama UserForm1 ) dengan ListBox kontrol ( bernama ListBox1 ) dan dua tombol:

    Selanjutnya, klik dua kali formulir dan tempelkan kode di bawah ini di jendela Code:

    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 EndSub

    Dengan UserForm di tempatnya, Anda dapat menggunakan salah satu makro berikut untuk menyalin lembar aktif ke buku kerja yang Anda pilih.

    Salin lembar ke awal dari buku kerja yang dipilih :

    Public Sub CopySheetToBeginningAnotherWorkbook() Load UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Then activeSheet.Copy Before:=Workbooks(UserForm1.SelectedWorkbook).Sheets(1) End If Unload UserForm1 End Sub

    Salin lembar ke akhir dari buku kerja yang dipilih :

    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

    Saat dijalankan di Excel, makro akan menampilkan daftar semua buku kerja yang sedang dibuka. Anda memilih yang dibutuhkan dan klik OK:

    Makro Excel untuk menyalin lembar dan mengganti nama

    Ketika Anda menyalin lembar di Excel, replika diberi nama dalam format default seperti Sheet1 (2) Makro berikut ini dapat menghindarkan Anda dari kesulitan mengubah nama default secara manual.

    Kode ini menduplikasi lembar kerja yang aktif, menamai salinannya sebagai "Lembar Tes" (Anda bebas menggantinya dengan nama lain yang Anda suka), dan menempatkan lembar yang disalin di akhir buku kerja saat ini.

    Public Sub CopySheetAndRenamePredefined() activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = "Test Sheet" End Sub

    Untuk memungkinkan pengguna untuk menentukan nama untuk lembar yang disalin , gunakan kode ini:

    Public Sub CopySheetAndRename() Dim newName As String On Error Resume Next newName = InputBox( "Masukkan nama untuk lembar kerja yang disalin" ) If newName "" Then activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End Sub

    Setelah berjalan, makro akan menampilkan kotak input berikut ini, di mana Anda mengetikkan nama yang diinginkan dan tekan OK:

    Excel makro untuk menyalin lembar dan mengganti nama berdasarkan nilai sel

    Dalam beberapa situasi, mungkin lebih nyaman untuk menamai salinan dengan nilai sel tertentu, misalnya, header kolom. Untuk ini, Anda cukup mengambil kode di atas dan menyediakan nilai dari sel yang saat ini dipilih Seperti contoh sebelumnya, salinan akan ditempatkan di akhir buku kerja yang aktif.

    Bagian tersulit adalah membuat penggunanya selalu memilih cell yang benar sebelum menjalankan makro :)

    Public Sub CopySheetAndRenameByCell() Dim newName As String On Error Resume Next newName = InputBox( "Masukkan nama untuk lembar kerja yang disalin" , "Salin lembar kerja" , ActiveCell.Value) If newName "" Then activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End Sub

    Atau, Anda bisa hardcode alamat sel yang dengannya salinan harus diberi nama, sel A1 dalam kode di bawah ini. Untuk memberi nama lembar kerja yang disalin berdasarkan sel lain, ganti A1 dengan referensi sel yang sesuai.

    Public Sub CopySheetAndRenameByCell2() Dim wks As Worksheet Set wks = activeSheet activeSheet.Copy After:=Worksheets(Sheets.Count) If wks.Range( "A1" ).Value "" Then On Error Resume Next activeSheet.Name = wks.Range( "A1" ).Value End If wks.Activate End Sub

    Makro untuk menyalin lembar kerja ke buku kerja tertutup

    Makro ini menyalin lembar aktif ke akhir buku kerja yang ditutup. Nama buku kerja lain tidak ditentukan dalam kode - makro akan membuka jendela Windows Explorer standar dan memungkinkan Anda untuk memilih file tujuan apa pun:

    Setelah Anda memilih file dan mengklik Terbuka , makro akan menyalin lembar aktif dan menutup buku kerja target secara otomatis.

    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 untuk menyalin lembar dari buku kerja lain tanpa membuka

    Makro ini memungkinkan Anda untuk menyalin lembar kerja dari file Excel lain tanpa membukanya. Lembar yang disalin akan disisipkan di akhir buku kerja saat ini.

    Ingatlah untuk membuat beberapa penggantian dalam kode:

    • C:\Users\XXX\Documents\Target_Book.xlsx harus diubah ke jalur aktual dan nama buku kerja tempat Anda ingin menyalin lembar.
    • Sheet1 harus diganti dengan nama sheet yang ingin Anda salin.
    Public Sub CopySheetFromClosedWorkbook() Dim sourceBook As Workbook Application.ScreenUpdating = False Set sourceBook = Workbooks. Open ( "C:\Users\XXX\Documents\Target_Book.xlsx" ) sourceBook.Sheets( "Sheet1" ).Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) sourceBook. Close Application.ScreenUpdating = True End Sub

    Excel VBA untuk menduplikasi lembar beberapa kali

    Kadang-kadang, anda mungkin perlu menduplikasi sheet yang sama lebih dari sekali, misalnya untuk menguji formula yang berbeda pada set data yang sama. Hal ini dapat dengan mudah dilakukan dengan makro berikut.

    Public Sub DuplicateSheetMultipleTimes() Dim n As Integer On Error Resume Next n = InputBox( "Berapa banyak salinan dari lembar aktif yang ingin Anda buat?" ) If n>= 1 Then For numtimes = 1 To n activeSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count) Next End If End Sub

    Buka lembar asli, jalankan makro, tentukan berapa banyak salinan dari lembar aktif yang ingin Anda buat, dan klik OK :

    Cara menduplikasi lembar di Excel dengan VBA

    Untuk menyalin lembar di Excel dengan salah satu makro di atas, Anda dapat memasukkan kode VBA ke dalam buku Anda sendiri atau menjalankan makro dari buku kerja sampel kami.

    Cara menambahkan makro ke buku kerja Anda

    Untuk menyisipkan kode di buku kerja Anda, lakukan langkah-langkah ini:

    1. Buka lembar kerja yang ingin Anda salin.
    2. Tekan Alt + F11 untuk membuka Visual Basic Editor.
    3. Pada panel kiri, klik kanan Buku Kerja ini , lalu klik Sisipkan > Modul .
    4. Tempel kode di jendela Code.
    5. Tekan F5 untuk menjalankan makro.

    Untuk petunjuk langkah demi langkah yang mendetail, silakan lihat Cara memasukkan kode VBA di Excel.

    Cara menjalankan makro dari buku kerja sampel kami

    Atau, Anda dapat mengunduh buku kerja sampel kami ke Gandakan Lembar Excel dan jalankan kode dari sana.

    Buku kerja contoh berisi makro berikut ini:

    SalinLembarKeBukuKerjaBaru - menyalin lembar kerja saat ini ke buku kerja baru.

    SalinLembar yang Dipilih - menyalin beberapa lembar yang Anda pilih ke buku kerja baru.

    SalinLembarKeBuku Kerja Lain - menyalin lembar aktif ke awal buku kerja lain.

    SalinLembarKeAkhirBuku Kerja Lain - menyalin lembar aktif ke akhir file Excel lain.

    SalinLembarDanRename - menduplikasi sheet saat ini, mengganti namanya seperti yang ditentukan oleh pengguna, dan meletakkan salinannya setelah semua sheet lain di buku kerja saat ini.

    SalinLembarDanRenameDidefinisikan - menduplikasi lembar aktif, memberikan nama hardcoded ke salinan dan menempatkannya di akhir buku kerja saat ini.

    SalinLembarDanRenameByCell - membuat salinan dari sheet aktif dan mengganti namanya berdasarkan nilai sel yang dipilih.

    SalinLembarDanRenameByCell2 - menyalin lembar aktif dan mengganti namanya berdasarkan alamat sel yang dikodekan.

    SalinLembarUntukMenutupBuku Kerja - memungkinkan Anda untuk menyalin lembar ke buku kerja tertutup.

    SalinLembarDariBukuKerjaTertutup - memungkinkan Anda untuk menyalin lembar dari file Excel lain tanpa membukanya.

    GandakanLembarLembarBanyakKali - memungkinkan Anda menduplikasi lembar di Excel beberapa kali.

    Untuk menjalankan makro di Excel Anda, cukup lakukan hal berikut:

    1. Buka buku kerja yang diunduh dan aktifkan konten jika diminta.
    2. Buka buku kerja Anda sendiri dan arahkan ke sheet yang ingin Anda salin.
    3. Di lembar kerja Anda, tekan Alt + F8 , pilih makro yang diinginkan, dan klik Lari .

    Itulah cara Anda dapat menduplikasi sheet di Excel dengan VBA. Saya berterima kasih telah membaca dan berharap dapat melihat Anda di blog kami minggu depan!

    Michael Brown adalah penggemar teknologi berdedikasi dengan hasrat untuk menyederhanakan proses kompleks menggunakan perangkat lunak. Dengan pengalaman lebih dari satu dekade di industri teknologi, dia telah mengasah keahliannya di Microsoft Excel dan Outlook, serta Google Spreadsheet dan Dokumen. Blog Michael didedikasikan untuk berbagi pengetahuan dan keahliannya dengan orang lain, memberikan tip dan tutorial yang mudah diikuti untuk meningkatkan produktivitas dan efisiensi. Apakah Anda seorang profesional berpengalaman atau pemula, blog Michael menawarkan wawasan berharga dan saran praktis untuk mendapatkan hasil maksimal dari perangkat lunak penting ini.