Bagaimana untuk menduplikasi helaian dalam Excel dengan VBA

  • Berkongsi Ini
Michael Brown

Tutorial menyediakan koleksi makro untuk menduplikasi helaian dalam Excel: salin dan namakan semula berdasarkan nilai sel, salin berbilang helaian, salin lembaran kerja aktif ke fail lain tanpa membukanya dan banyak lagi.

Menyalin helaian secara manual dalam Excel agak cepat dan mudah... jika dilakukan sekali atau dua kali sahaja. Penduaan berbilang helaian berbilang kali membosankan dan memakan masa. Pada halaman ini, anda akan menemui segelintir makro berguna untuk mengautomasikan tugasan ini.

    Excel VBA untuk menyalin helaian ke buku kerja baharu

    Makro satu baris yang paling mudah ini berfungsi tepat apa yang dicadangkan oleh namanya - menyalin helaian aktif ke buku kerja baharu.

    Public Sub CopySheetToNewWorkbook() activeSheet.Copy End Sub

    Salin berbilang helaian dalam Excel dengan VBA

    Jika anda ingin salin beberapa helaian daripada buku kerja aktif kepada yang baharu, pilih semua helaian kerja yang diminati dan jalankan makro ini:

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

    Excel VBA untuk menyalin helaian ke buku kerja lain

    Bergantung pada tempat anda ingin memasukkan helaian yang disalin, gunakan salah satu daripada makro berikut.

    Salin helaian ke permulaan buku kerja lain

    Makro ini menyalin helaian aktif sebelum semua lembaran kerja lain dalam fail destinasi, Book1 dalam contoh ini. Untuk menyalin ke fail lain, gantikan "Book1.xlsx" dengan nama penuh buku kerja sasaran anda.

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

    Salin helaian ke penghujung buku kerja lain

    Sekeping kod ini menduplikasi lembaran kerja aktif dan meletakkan salinan ke penghujung Buku1 . Sekali lagi, sila ingat untuk menggantikan "Book1.xlsx" dengan nama buku kerja destinasi anda.

    Public Sub CopySheetToEndAnotherWorkbook() activeSheet.Copy After:=Workbooks( "Book1.xlsx" ).Helaian(Workbooks( "Book1.xlsx " ).Lembaran Kerja. Kiraan) Tamat Sub

    Nota. Untuk makro berfungsi, buku kerja sasaran mesti disimpan pada pemacu keras atau rangkaian anda.

    Salin helaian ke buku kerja yang dipilih

    Untuk dapat menyalin helaian semasa ke mana-mana buku kerja terbuka, anda boleh mencipta UserForm (bernama UserForm1 ) dengan kawalan ListBox ( bernama ListBox1 ) dan dua butang:

    Seterusnya, klik dua kali borang dan tampal kod di bawah dalam tetingkap Kod:

    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() Jika ListBox1.ListIndex > -1 Kemudian SelectedWorkbook = ListBox1.List(ListBox1.ListIndex) Tamat Jika Me.Hide End Sub Private Sub CommandButton2_Click() SelectedWorkbook = "" Me.Hide End Sub

    Dengan UserBorang di tempatnya, anda boleh menggunakan salah satu daripada yang berikut makro untuk menyalinhelaian aktif ke buku kerja pilihan anda.

    Salin helaian ke permulaan buku kerja yang dipilih :

    Helaian Salin Sub AwamToBeginningAnotherWorkbook() Muatkan UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook " " ) Kemudian activeSheet.Copy Before:=Workbooks(UserForm1.SelectedWorkbook).Helaian(1) End If Unload UserForm1 End Sub

    Salin helaian ke hujung buku kerja yang dipilih :

    Public Sub CopySheetToEndAnotherWorkbook() Muatkan UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Kemudian activeSheet.Copy After:=Workbooks( _ UserForm1.SelectedWorkbook).Helaian( _ Workbooks(UserWork1.SelectedWorkbook). End Sub

    Apabila dijalankan dalam Excel, makro akan menunjukkan kepada anda senarai semua buku kerja yang sedang dibuka. Anda pilih yang diperlukan dan klik OK:

    Makro Excel untuk menyalin helaian dan menamakan semula

    Apabila anda menyalin helaian dalam Excel, replika diberikan nama dalam format lalai seperti Helaian1 (2) . Makro berikut boleh mengelakkan masalah menukar nama lalai secara manual.

    Kod ini menduplikasi lembaran kerja aktif, menamakan salinan sebagai "Helaian Ujian" (anda bebas untuk menggantikannya dengan nama lain yang anda suka) , dan letakkan helaian yang disalin pada penghujung buku kerja semasa.

    Public Sub CopySheetAndRenamePredefined() activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name =Subtitle Akhir "Helaian Ujian"

    Untuk membenarkan pengguna menentukan nama bagi helaian yang disalin , gunakan kod ini:

    Public Sub CopySheetAndRename() Dim newName As String On Error Resume Next newName = InputBox( "Masukkan nama untuk lembaran kerja yang disalin" ) Jika newName "" Kemudian activeSheet.Copy After:=Worksheets(Sheets.Count) On Ralat Resume Next ActiveSheet.Name = newName Tamat Jika End Sub

    Setelah dijalankan, makro memaparkan kotak input berikut, di mana anda menaip nama yang diingini dan tekan OK:

    Makro Excel untuk menyalin helaian dan menamakan semula berdasarkan nilai sel

    Dalam sesetengah situasi, mungkin lebih mudah untuk menamakan salinan dengan nilai sel tertentu, sebagai contoh, pengepala lajur. Untuk ini, anda hanya mengambil kod di atas dan membekalkan nilai sel yang dipilih semasa ke kotak input secara automatik. Seperti contoh sebelumnya, salinan akan diletakkan di penghujung buku kerja aktif.

    Bahagian yang paling sukar ialah meminta pengguna anda sentiasa memilih sel yang betul sebelum dijalankan makro :)

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

    Sebagai alternatif, anda boleh hardcode alamatsel yang mana salinan harus dinamakan, sel A1 dalam kod di bawah. Untuk menamakan lembaran kerja yang disalin berdasarkan sel lain, gantikan A1 dengan rujukan sel yang sesuai.

    Public Sub CopySheetAndRenameByCell2() Dim wks As Worksheet Set wks = activeSheet activeSheet.Copy After:=Worksheets(Sheets.Count) If wks.Julat ( "A1" ).Nilai "" Kemudian Pada Ralat Resume Next ActiveSheet.Name = wks.Julat( "A1" ).Nilai Tamat Jika wks.Aktifkan End Sub

    Makro untuk menyalin lembaran kerja ke buku kerja tertutup

    Makro ini menyalin helaian aktif ke penghujung buku kerja tertutup. Nama buku kerja lain tidak dinyatakan dalam kod - makro akan membuka tetingkap Windows Explorer standard dan membolehkan anda memilih mana-mana fail destinasi:

    Selepas anda memilih fail dan klik Buka , makro akan menyalin helaian aktif dan menutup buku kerja sasaran secara automatik.

    Public Sub CopySheetToClosedWorkbook() Dim fileName Dim closedBook As Workbook Dim currentSheet As Worksheet fileName = Application.GetOpenFilename( "Excel Fail (*.xlsx), *.xlsx" ) Jika Nama fail Salah Kemudian Application.ScreenUpdating = Palsu Set currentSheet = Application.activeSheet Set closedBook = Buku kerja. Buka (Nama fail) currentSheet.Copy After:=closedBook.Sheets(closedBook.Worksheets.Count) closedBook. Tutup ( Benar ) Aplikasi.ScreenUpdating = True End Jika End Sub

    Excel VBA untuk menyalin helaian dari buku kerja lain tanpapembukaan

    Makro ini membolehkan anda menyalin lembaran kerja daripada fail Excel lain tanpa membukanya. Helaian yang disalin akan disisipkan pada penghujung buku kerja semasa.

    Hanya ingat untuk membuat beberapa penggantian dalam kod:

    • C:\Users\XXX\Documents\ Target_Book.xlsx hendaklah ditukar kepada laluan sebenar dan nama buku kerja yang anda ingin salin helaian.
    • Helaian1 hendaklah digantikan dengan nama helaian yang ingin anda salin.
    Public Sub CopySheetFromClosedWorkbook() Malapkan Sumber Buku Sebagai Aplikasi Buku Kerja.ScreenUpdating = Set Sumber Buku Salah = Buku Kerja. Buka ( "C:\Users\XXX\Documents\Target_Book.xlsx") sourceBook.Sheets( "Sheet1" ).Salin Selepas:=This Workbook.Sheets(This Workbook.Sheets.Count) sourceBook. Tutup Application.ScreenUpdating = True End Sub

    Excel VBA untuk menduplikasi helaian beberapa kali

    Kadangkala, anda mungkin perlu menduplikasi helaian yang sama lebih daripada sekali, contohnya untuk menguji formula yang berbeza pada set data yang sama. Ini boleh dilakukan dengan mudah dengan makro berikut.

    Public Sub DuplicateSheetMultipleTimes() Dim n As Integer On Error Resume Next n = InputBox( "Berapa banyak salinan helaian aktif yang anda mahu buat?" ) Jika n > = 1 Kemudian Untuk numtimes = 1 Kepada n activeSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count) Next End If End Sub

    Buka helaian asal, jalankan makro, nyatakan bilangan salinan helaian aktifyang anda ingin buat dan klik OK :

    Cara untuk menduplikasi helaian dalam Excel dengan VBA

    Untuk menyalin helaian dalam Excel dengan salah satu makro di atas, anda boleh sama ada memasukkan kod VBA ke dalam buku anda sendiri atau menjalankan makro daripada buku kerja sampel kami.

    Cara menambah makro pada buku kerja anda

    Untuk memasukkan kod dalam buku kerja anda, lakukan langkah berikut:

    1. Buka lembaran kerja yang ingin anda salin.
    2. Tekan Alt + F11 untuk membuka Editor Visual Basic.
    3. Hidupkan anak tetingkap kiri, klik kanan Buku Kerja Ini dan kemudian klik Sisipkan > Modul .
    4. Tampal kod dalam tetingkap Kod.
    5. Tekan F5 untuk menjalankan makro.

    Untuk mendapatkan arahan langkah demi langkah yang terperinci, sila lihat Cara memasukkan kod VBA dalam Excel.

    Cara menjalankan makro daripada buku kerja contoh kami

    Sebagai alternatif, anda boleh memuat turun buku kerja sampel kami ke Helaian Pendua Excel dan jalankan kod dari sana.

    Buku kerja sampel mengandungi makro berikut:

    CopySheetToNewWorkbook - menyalin cu sewakan lembaran kerja ke buku kerja baharu.

    CopySelectedSheets - menyalin berbilang helaian yang anda pilih ke buku kerja baharu.

    CopySheetToBeginningAnotherWorkbook - menyalin helaian aktif ke permulaan buku kerja lain.

    CopySheetToEndAnotherWorkbook - menyalin helaian aktif ke penghujung fail Excel lain.

    CopySheetAndRename - menduplikasikan semasa lembaran,menamakan semula ia seperti yang ditentukan oleh pengguna dan meletakkan salinan selepas semua helaian lain dalam buku kerja semasa.

    CopySheetAndRenamePredefined - menduplikasi helaian aktif, memberikan nama berkod keras pada salinan dan meletakkannya pada penghujung buku kerja semasa.

    CopySheetAndRenameByCell - membuat salinan helaian aktif dan menamakan semula berdasarkan nilai sel yang dipilih.

    CopySheetAndRenameByCell2 - menyalin helaian aktif dan menamakan semula ia berdasarkan alamat sel berkod keras.

    CopySheetToClosedWorkbook - membenarkan anda menyalin helaian ke buku kerja tertutup.

    CopySheetFromClosedWorkbook - membolehkan anda menyalin helaian daripada fail Excel lain tanpa membukanya.

    DuplicateSheetMultipleTimes - membolehkan anda menduplikasi helaian dalam Excel beberapa kali.

    Kepada jalankan makro dalam Excel anda, cuma lakukan perkara berikut:

    1. Buka buku kerja yang dimuat turun dan dayakan kandungan jika digesa.
    2. Buka buku kerja anda sendiri dan navigasi ke helaian yang anda mahu salinan.
    3. <1 7>Dalam lembaran kerja anda, tekan Alt + F8 , pilih makro yang diminati dan klik Jalankan .

    Begitulah anda boleh menduplikasi helaian dalam Excel dengan VBA. Saya mengucapkan terima kasih kerana membaca dan berharap dapat berjumpa anda di blog kami minggu hadapan!

    Michael Brown ialah peminat teknologi yang berdedikasi dengan semangat untuk memudahkan proses kompleks menggunakan alat perisian. Dengan lebih sedekad pengalaman dalam industri teknologi, beliau telah mengasah kemahirannya dalam Microsoft Excel dan Outlook, serta Helaian Google dan Dokumen. Blog Michael berdedikasi untuk berkongsi pengetahuan dan kepakarannya dengan orang lain, menyediakan petua dan tutorial yang mudah diikuti untuk meningkatkan produktiviti dan kecekapan. Sama ada anda seorang profesional berpengalaman atau pemula, blog Michael menawarkan pandangan berharga dan nasihat praktikal untuk memanfaatkan sepenuhnya alatan perisian penting ini.