Excel'de bir sayfayı VBA ile çoğaltma

  • Bunu Paylaş
Michael Brown

Eğitim, Excel'de sayfaları çoğaltmak için bir makro koleksiyonu sunar: hücre değerine göre kopyalama ve yeniden adlandırma, birden çok sayfayı kopyalama, etkin bir çalışma sayfasını açmadan başka bir dosyaya kopyalama ve daha fazlası.

Excel'de sayfaları manuel olarak kopyalamak oldukça hızlı ve basittir... yalnızca bir veya iki kez gerçekleştirilirse. Birden çok sayfayı birden çok kez çoğaltmak sıkıcı ve zaman alıcıdır. Bu sayfada, bu görevi otomatikleştirmek için bir avuç yararlı makro bulacaksınız.

    Sayfayı yeni çalışma kitabına kopyalamak için Excel VBA

    Bu en basit tek satırlık makro tam olarak adından da anlaşılacağı gibi etkin sayfayı yeni bir çalışma kitabına kopyalar.

    Public Sub CopySheetToNewWorkbook() activeSheet.Copy End Sub

    VBA ile Excel'de birden çok sayfayı kopyalama

    Etkin çalışma kitabındaki birkaç sayfayı yeni bir çalışma kitabına kopyalamak isterseniz, ilgili tüm çalışma sayfalarını seçin ve bu makroyu çalıştırın:

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

    Sayfayı başka bir çalışma kitabına kopyalamak için Excel VBA

    Kopyalanan sayfayı nereye eklemek istediğinize bağlı olarak, aşağıdaki makrolardan birini kullanın.

    Sayfayı başka bir çalışma kitabının başına kopyalama

    Bu makro, etkin sayfayı hedef dosyadaki diğer tüm çalışma sayfalarından önce kopyalar, Kitap1 Başka bir dosyaya kopyalamak için "Book1.xlsx" yerine hedef çalışma kitabınızın tam adını yazın.

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

    Sayfayı başka bir çalışma kitabının sonuna kopyalama

    Bu kod parçası etkin çalışma sayfasını çoğaltır ve kopyayı Kitap1 Yine, lütfen "Book1.xlsx" yerine hedef çalışma kitabınızın adını yazmayı unutmayın.

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

    Not: Makroların çalışması için hedef çalışma kitabının sabit diskinizde veya ağınızda kayıtlı olması gerekir.

    Sayfayı seçilen bir çalışma kitabına kopyalama

    Geçerli sayfayı herhangi bir açık çalışma kitabına kopyalayabilmek için bir UserForm (adı KullanıcıFormu1 ) ile ListBox kontrol ( adı ListBox1 ) ve iki düğme:

    Ardından, forma çift tıklayın ve aşağıdaki kodu Kod penceresine yapıştırın:

    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 EndAlt

    UserForm yerindeyken, etkin sayfayı seçtiğiniz çalışma kitabına kopyalamak için aşağıdaki makrolardan birini kullanabilirsiniz.

    Sayfayı şuraya kopyalayın seçilen çalışma kitabının başlangıcı :

    Public Sub CopySheetToBeginningAnotherWorkbook() UserForm1'i Yükle UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Then activeSheet.Copy Before:=Workbooks(UserForm1.SelectedWorkbook).Sheets(1) End If Unload UserForm1 End Sub

    Sayfayı şuraya kopyalayın seçilen çalışma kitabının sonu :

    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'de çalıştırıldığında, makro size o anda açık olan tüm çalışma kitaplarının bir listesini gösterecektir. Gerekli olanı seçip Tamam'a tıklayın:

    Sayfayı kopyalamak ve yeniden adlandırmak için Excel makrosu

    Excel'de bir sayfayı kopyaladığınızda, kopyaya aşağıdaki gibi varsayılan biçimde bir ad verilir Sayfa1 (2) Aşağıdaki makrolar sizi varsayılan adı manuel olarak değiştirme zahmetinden kurtarabilir.

    Bu kod etkin çalışma sayfasını çoğaltır, kopyayı "Test Sayfası" olarak adlandırır (bunu istediğiniz başka bir adla değiştirmekte özgürsünüz) ve kopyalanan sayfayı geçerli çalışma kitabının sonuna yerleştirir.

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

    Kullanıcının şunları yapmasına izin vermek için kopyalanan sayfanın adını belirtin , bu kodu kullanın:

    Public Sub CopySheetAndRename() Dim newName As String On Error Resume Next newName = InputBox( "Enter the name for the copied worksheet" ) If newName "" Then activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End Sub

    Makro çalıştırıldığında, istediğiniz adı yazıp Tamam düğmesine bastığınız aşağıdaki giriş kutusu görüntülenir:

    Sayfayı kopyalamak ve hücre değerine göre yeniden adlandırmak için Excel makrosu

    Bazı durumlarda, bir kopyayı belirli bir hücre değeriyle, örneğin bir sütun başlığıyla adlandırmak daha uygun olabilir. Bunun için, yukarıdaki kodu alıp şu anda seçili hücre Önceki örnekte olduğu gibi, kopya etkin çalışma kitabının sonuna yerleştirilecektir.

    En zor kısım, kullanıcılarınızın makroyu çalıştırmadan önce her zaman doğru hücreyi seçmelerini sağlamak olacaktır :)

    Public Sub CopySheetAndRenameByCell() Dim newName As String On Error Resume Next newName = InputBox( "Kopyalanan çalışma sayfası için ad girin" , "Çalışma sayfasını kopyala" , ActiveCell.Value) If newName "" Then activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End Sub

    Alternatif olarak, şunları yapabilirsiniz hücrenin adresini sabit kodlayın Kopyanın adlandırılacağı hücre, aşağıdaki kodda A1 hücresidir. Kopyalanan çalışma sayfasını başka bir hücreye göre adlandırmak için A1'i uygun bir hücre başvurusuyla değiştirin.

    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

    Çalışma sayfasını kapalı bir çalışma kitabına kopyalamak için makro

    Bu makro, etkin sayfayı kapalı bir çalışma kitabının sonuna kopyalar. Kodda başka bir çalışma kitabının adı belirtilmez - makro standart Windows Explorer penceresini açar ve herhangi bir hedef dosya seçmenize izin verir:

    Dosyayı seçtikten sonra Açık makrosu etkin sayfayı kopyalayacak ve hedef çalışma kitabını otomatik olarak kapatacaktır.

    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

    Açmadan başka bir çalışma kitabından sayfa kopyalamak için Excel VBA

    Bu makro, bir çalışma sayfasını açmadan başka bir Excel dosyasından kopyalamanızı sağlar. Kopyalanan sayfa geçerli çalışma kitabının sonuna eklenir.

    Kodda birkaç değişiklik yapmayı unutmayın:

    • C:\Users\XXX\Documents\Target_Book.xlsx, bir sayfayı kopyalamak istediğiniz çalışma kitabının gerçek yolu ve adıyla değiştirilmelidir.
    • Sayfa1, kopyalamak istediğiniz sayfanın adıyla değiştirilmelidir.
    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

    Sayfayı birden çok kez çoğaltmak için Excel VBA

    Bazen, örneğin aynı veri seti üzerinde farklı formülleri test etmek için aynı sayfayı birden fazla kez çoğaltmanız gerekebilir. Bu, aşağıdaki makro ile kolayca yapılabilir.

    Public Sub DuplicateSheetMultipleTimes() Dim n As Integer On Error Resume Next n = InputBox( "Etkin sayfanın kaç kopyasını yapmak istiyorsunuz?" ) If n>= 1 Then For numtimes = 1 To n activeSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count) Next End If End Sub

    Orijinal sayfayı açın, makroyu çalıştırın, etkin sayfanın kaç kopyasını oluşturmak istediğinizi belirtin ve TAMAM. :

    Excel'de sayfalar VBA ile nasıl çoğaltılır

    Excel'deki bir sayfayı yukarıdaki makrolardan biriyle kopyalamak için, VBA kodunu kendi kitabınıza ekleyebilir veya örnek çalışma kitabımızdan bir makro çalıştırabilirsiniz.

    Çalışma kitabınıza makro ekleme

    Kodu çalışma kitabınıza eklemek için aşağıdaki adımları uygulayın:

    1. Kopyalamak istediğiniz çalışma sayfasını açın.
    2. Visual Basic Düzenleyicisini açmak için Alt + F11 tuşlarına basın.
    3. Sol bölmede, sağ tıklayın BuÇalışmaKitabı 'a tıklayın ve ardından Ekleme > Modül .
    4. Kodu Kod penceresine yapıştırın.
    5. Makroyu çalıştırmak için F5 tuşuna basın.

    Ayrıntılı adım adım talimatlar için lütfen Excel'de VBA kodu nasıl eklenir bölümüne bakın.

    Örnek çalışma kitabımızdan bir makro nasıl çalıştırılır

    Alternatif olarak, Excel Sayfalarını Çoğaltmak için örnek çalışma kitabımızı indirebilir ve kodu buradan çalıştırabilirsiniz.

    Örnek çalışma kitabı aşağıdaki makroları içerir:

    CopySheetToNewWorkbook - Geçerli çalışma sayfasını yeni bir çalışma kitabına kopyalar.

    CopySelectedSheets - Seçtiğiniz birden çok sayfayı yeni bir çalışma kitabına kopyalar.

    CopySheetToBeginningAnotherWorkbook - Etkin sayfayı başka bir çalışma kitabının başına kopyalar.

    CopySheetToEndAnotherWorkbook - Etkin sayfayı başka bir Excel dosyasının sonuna kopyalar.

    CopySheetAndRename - Geçerli sayfayı çoğaltır, kullanıcı tarafından belirtildiği şekilde yeniden adlandırır ve kopyayı geçerli çalışma kitabındaki diğer tüm sayfalardan sonra koyar.

    CopySheetAndRenamePredefined - Etkin sayfayı çoğaltır, kopyaya sabit kodlanmış bir ad verir ve geçerli çalışma kitabının sonuna yerleştirir.

    CopySheetAndRenameByCell - Etkin sayfanın bir kopyasını oluşturur ve seçilen hücre değerine göre yeniden adlandırır.

    CopySheetAndRenameByCell2 - Etkin sayfayı kopyalar ve sabit kodlanmış hücre adresine göre yeniden adlandırır.

    CopySheetToClosedWorkbook - sayfayı kapalı bir çalışma kitabına kopyalamanızı sağlar.

    CopySheetFromClosedWorkbook - bir sayfayı açmadan başka bir Excel dosyasından kopyalamanızı sağlar.

    DuplicateSheetMultipleTimes - Excel'de bir sayfayı birden çok kez çoğaltmanıza olanak tanır.

    Makroyu Excel'inizde çalıştırmak için aşağıdakileri yapmanız yeterlidir:

    1. İndirilen çalışma kitabını açın ve istenirse içeriği etkinleştirin.
    2. Kendi çalışma kitabınızı açın ve kopyalamak istediğiniz sayfaya gidin.
    3. Çalışma sayfanızda Alt + F8 tuşlarına basın, ilgili makroyu seçin ve Koşmak .

    Excel'de bir sayfayı VBA ile bu şekilde çoğaltabilirsiniz. Okuduğunuz için teşekkür ediyor ve gelecek hafta blogumuzda görüşmeyi umuyorum!

    Michael Brown, yazılım araçlarını kullanarak karmaşık süreçleri basitleştirme tutkusuna sahip, kendini adamış bir teknoloji meraklısıdır. Teknoloji endüstrisinde on yılı aşkın deneyimiyle Microsoft Excel ve Outlook'un yanı sıra Google E-Tablolar ve Dokümanlar'daki becerilerini geliştirdi. Michael'ın blogu, bilgisini ve uzmanlığını başkalarıyla paylaşmaya, üretkenliği ve verimliliği artırmaya yönelik takip etmesi kolay ipuçları ve eğitimler sağlamaya adamıştır. İster deneyimli bir profesyonel, ister yeni başlayan olun, Michael'ın blogu, bu temel yazılım araçlarından en iyi şekilde yararlanmak için değerli bilgiler ve pratik tavsiyeler sunar.