- Çalışma Sayfasını Yeni Çalışma Kitabına Kopyala
- Birden Çok Sayfayı Yeni Çalışma Kitabına Kopyalayın
- Sayfayı Aynı Çalışma Kitabında Kopyala
- Sayfayı Taşı
- Kopyalama ve Ad Sayfası
- Çalışma Sayfasını Başka Bir Çalışma Kitabına Kopyala
- Çalışma Sayfasını Kapalı Bir Çalışma Kitabına Kopyala
- Sayfayı Açmadan Başka Bir Çalışma Kitabından Kopyalama
- Excel Sayfasını Birden Çok Çoğalt
Bu eğitim, VBA kullanarak bir Sayfanın veya Çalışma Sayfasının nasıl kopyalanacağını ele alacaktır.
Çalışma Sayfasını Yeni Çalışma Kitabına Kopyala
Bir Çalışma Sayfasını yeni bir Çalışma Kitabına kopyalamak için:
1 | Sayfalar("Sayfa1").Kopyala |
ActiveSheet'i Yeni Çalışma Kitabına Kopyala
ActiveSheet'i yeni bir Çalışma Kitabına kopyalamak için:
1 | ActiveSheet.Copy |
Birden Çok Sayfayı Yeni Çalışma Kitabına Kopyalayın
Birden çok Sayfayı yeni bir çalışma kitabına kopyalamak için:
1 | ActiveWindow.SelectedSheets.Copy |
Sayfayı Aynı Çalışma Kitabında Kopyala
Size en basit Sayfa kopyalama örneğini göstererek başladık: Sayfaları yeni bir Çalışma Kitabına kopyalama. Aşağıdaki bu örnekler, aynı Çalışma Kitabında bir Sayfayı nasıl kopyalayacağınızı gösterecektir. Bir Çalışma Kitabı içindeki bir Sayfayı kopyalarken, bir konum belirtmelisiniz. Bir konum belirtmek için, VBA'ya Çalışma Sayfasını başka bir Çalışma Sayfasından ÖNCE veya SONRA taşımasını söyleyeceksiniz.
Sayfayı Başka Bir Sayfadan Önce Kopyala
Burada Sheet2'den önce Sheet'i kopyalayıp yapıştırmayı belirteceğiz.
1 | Sayfalar("Sayfa1").Önce Kopyala:=Sayfalar("Sayfa2") |
İlk Sayfadan Önce Sayfayı Kopyala
Sayfa adını belirtmek yerine, Sayfa konumunu da belirtebilirsiniz. Burada, Çalışma Kitabındaki ilk Sayfadan önce bir Sayfayı kopyalayıp yapıştırıyoruz.
1 | Sayfalar("Sayfa1").Önce Kopyala:=Etablolar(1) |
Yeni oluşturulan Sayfa şimdi Çalışma Kitabındaki ilk Sayfa olacaktır.
Sayfayı Son Sayfadan Sonra Kopyala
VBA'ya Sayfayı başka bir sayfadan SONRA yapıştırmasını söylemek için After özelliğini kullanın. Burada, Çalışma Kitabındaki son Sayfadan sonra bir Sayfayı kopyalayıp yapıştıracağız:
1 | Sheets("Sheet1").Copy After:=Sheets(Sheets.Count) |
Çalışma Kitabındaki Sayfaların sayısını saymak için Sheets.Count kullandığımıza dikkat edin.
Sayfayı Taşı
Benzer sözdizimini kullanarak Çalışma Kitabındaki bir Sayfayı da taşıyabilirsiniz. Bu kod, Sayfa1'i Çalışma Kitabının sonuna taşıyacaktır:
1 | Sayfalar("Sayfa1").Sonra Taşı:=Sayfalar(Sayfalar.Sayı) |
Kopyalama ve Ad Sayfası
Bir Sayfayı kopyalayıp yapıştırdıktan sonra, yeni oluşturulan sayfa ActiveSheet olur. Yeni sayfamızı yeniden adlandırmak için ActiveSheet.Name'i kullanmanız yeterlidir:
123456 | Alt CopySheetRename1()Sheets("Sheet1").Copy After:=Sheets(Sheets.Count)ActiveSheet.Name = "Son Sayfa"Alt Bitiş |
Sayfa adı zaten varsa, yukarıdaki kod bir hata oluşturur. Bunun yerine, VBA'ya Sayfayı adlandırmayı yok saymasını ve prosedürün geri kalanına devam etmesini söylemek için “Sonraki Hatada Devam Et” seçeneğini kullanabiliriz:
12345678 | Alt CopySheetRename2()Sheets("Sheet1").Copy After:=Sheets(Sheets.Count)Hatada Devam Et SonrakiActiveSheet.Name = "Son Sayfa"Hatada GoTo 0Alt Bitiş |
Veya, sayfayı kopyalamaya çalışmadan önce Sayfa adının zaten var olup olmadığını test etmek için RangeExists İşlevimizi kullanın:
123456789101112131415161718 | Alt CopySheetRename3()Eğer RangeExists ("Son Sayfa") SonraMsgBox "Sayfa zaten var."BaşkaSheets("Sheet1").Copy After:=Sheets(Sheets.Count)ActiveSheet.Name = "Son Sayfa"BitirAlt Bitişİşlev RangeExists(WhatSheet As String, İsteğe Bağlı ByVal WhatRange As String = "A1") Boolean OlarakAralık olarak Dim testiHatada Devam Et SonrakiSet testi = ActiveWorkbook.Sheets(WhatSheet).Range(WhatRange)RangeExists = Err.Number = 0Hatada GoTo 0Bitiş İşlevi |
Hücre Değerine Dayalı Kopyalama ve Ad Sayfası
Ayrıca bir Sayfayı Hücre Değerine göre kopyalamak ve adlandırmak isteyebilirsiniz. Bu kod, Çalışma Sayfasını A1'deki Hücre değerine göre adlandıracaktır.
12345678 | Alt CopySheetRenameFromCell()Sheets("Sheet1").Copy After:=Sheets(Sheets.Count)Hatada Devam Et SonrakiActiveSheet.Name = Aralık("A1").ValueHatada GoTo 0Alt Bitiş |
Çalışma Sayfasını Başka Bir Çalışma Kitabına Kopyala
Şimdiye kadar Çalışma Kitabındaki Sayfaları kopyalamak için çalıştık. Şimdi, Sayfaları diğer Çalışma Kitaplarına kopyalayıp yapıştırmak için örnekleri ele alacağız. Bu kod, bir Sayfayı başka bir çalışma kitabının başına kopyalayacaktır:
1 | Sheets("Sheet1").Copy Before:=Workbooks("Example.xlsm").Sheets(1) |
Bu, bir Çalışma Sayfasını başka bir Çalışma Kitabının sonuna kopyalayacaktır.
1 | Sheets("Sheet1").Copy After:=Workbooks("Example.xlsm").Sheets(Workbooks("Example.xlsm").Sheets.Count) |
Değiştirdiğimize dikkat edin 1 ile birlikte Çalışma Kitapları(“Örnek.xlsm”).Sheets.Count son Çalışma Sayfasını almak için.
Çalışma Sayfasını Kapalı Bir Çalışma Kitabına Kopyala
Ayrıca bir Çalışma Sayfasını kapalı bir Çalışma Kitabına kopyalamak isteyebilirsiniz. Bu kod, içine bir Sayfa kopyalayabilmeniz için kapalı bir Çalışma Kitabı açacaktır.
123456789 | Alt CopySheetToClosedWB()Application.ScreenUpdating = YanlışCloseBook'u ayarla = Workbooks.Open("D:\Dropbox\excel\makaleler\example.xlsm")Sayfalar("Sayfa1").Önce Kopyala:=kapalıKitap.Tablolar(1)kapalıBook.Close SaveChanges:=TrueApplication.ScreenUpdating = DoğruAlt Bitiş |
Sayfayı Açmadan Başka Bir Çalışma Kitabından Kopyalama
Tersine, bu kod, çalışma kitabını manuel olarak açmanıza gerek kalmadan kapalı bir Çalışma Kitabından bir Çalışma Sayfasını kopyalayacaktır.
123456789 | Alt CopySheetFromClosedWB()Application.ScreenUpdating = YanlışKapalıKitabı ayarla = Çalışma Kitapları.Open("D:\Dropbox\excel\makaleler\example.xlsm")kapalıBook.Sheets("Sheet1").Copy Before:=ThisWorkbook.Sheets(1)kapalıBook.Close SaveChanges:=YanlışApplication.ScreenUpdating = DoğruAlt Bitiş |
Bu örneklerin her ikisinde de işlemin arka planda çalışması için ScreenUpdating'i devre dışı bıraktığımıza dikkat edin.
Excel Sayfasını Birden Çok Çoğalt
Ayrıca bir Döngü kullanarak bir Excel Sayfasını birden çok kez çoğaltabilirsiniz.
1234567891011121314 | Alt CopySheetMultipleTimes()Tamsayı Olarak Dim nDim i Tamsayı OlarakHatada Devam Et Sonrakin = InputBox("Kaç kopya yapmak istiyorsunuz?")n > 0 isei = 1'den n'yeActiveSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count)SonrakiBitirAlt Bitiş |