Vba kullanarak bir sayfayı nasıl kopyalayabilir ve taşıyabilirim?
VBA kodunu kullanarak Excel’de bir sayfayı kopyalayıp taşıyabilirsiniz ve bu eğitimde bunu yapmanın farklı yollarını öğreneceğiz.
Aynı çalışma kitabındaki bir sayfayı kopyalama
Aynı çalışma kitabındaki bir sayfayı kopyalamak istiyorsanız kopyalama yöntemini kullandığınız yerde aşağıdaki kodu kullanabilirsiniz.
Sheets("Sheet5").Copy Before:=Sheets(1)
Bu kodda sayfa1 çalışma kitabının ilk sayfasıdır ve bu kodu çalıştırdığınızda çalışma kitabının ilk sayfasından önceki “Sayfa5” isimli sayfayı kopyalar.
Ve eğer ilk sayfadan sonra kopyalamak isterseniz kod aşağıdaki gibi olacaktır.
Sheets("Sheet5").Copy After:=Sheets(1)
Ve eğer ilk sayfadan sonra kopyalamak isterseniz kod aşağıdaki gibi olacaktır.
Sheets("Sheet5").Copy Before:=Sheets("Sheet3") Sheets("Sheet5").Copy After:=Sheets("Sheet3")
Bu VBA kodunu çalıştırdığınızda, “Sayfa5″i “Sayfa3″ten önce ve sonra kopyalar.
Aşağıdaki kod satırıyla çalışma kitabının son sayfasından sonraki bir sayfayı kopyalayabilirsiniz. Sayfa sayısını almak içinsheet.count’u kullanır, ardından sayfayı en son kopyalamak için count’u kullanır.
Sheets("myNewSheet").Move After:=Sheets(Sheets.Count)
Yararlı bağlantılar: Makro çalıştırma – Makro kaydedici – Visual Basic Düzenleyici – Kişisel Makrolar El Kitabı
Aynı çalışma kitabındaki bir sayfayı yeni bir adla kopyalama
Ve eğer bir sayfayı kopyalayıp anında yeniden adlandırmak istiyorsanız, tıpkı aşağıdaki kod gibi name özelliğini kullanmanız gerekir.
Sheets("Sheet5").Move Before:=Sheets(1) ActiveSheet.Name = "myNewSheet"
Aynı çalışma kitabındaki bir sayfayı taşıma
Aynı çalışma kitabındaki bir sayfayı taşımak için aşağıdaki koddaki gibi taşıma yöntemini kullanmanız gerekir.
Sheets("Sheet5").Move After:=Sheets(1)
Bu kod, yukarıdaki anlık görüntüde görebileceğiniz gibi “Sayfa5″i “Sayfa2″nin önüne taşıyacaktır.
Bir sayfayı yeni çalışma kitabına kopyalama
Geçerli çalışma kitabında bir sayfa tanımlamadan kopyalama yöntemini kullandığınızda, VBA yeni bir çalışma kitabı açar ve bu sayfayı o çalışma kitabına kopyalar.
Sheets("Sheet5").Copy
Ve bir sayfayı yeni bir çalışma kitabına taşımak için.
Sheets("Sheet5").Move
Birden çok sayfayı yeni çalışma kitabına kopyalama
Yeni çalışma kitabına aynı anda birden fazla sayfa eklemek istiyorsanız aşağıdaki gibi bir kod kullanın.
Sheets(Array("Sheet2", "Sheet3", "Sheet4", "Sheet5")).Copy
Yukarıdaki kod bir dizi sayfa oluşturur ve ardından bunların hepsini yeni bir çalışma kitabına kopyalar.
Bir sayfayı başka bir çalışma kitabına kopyalama
Bir sayfayı zaten açık olan başka bir çalışma kitabına kopyalamak istiyorsanız, çalışma kitabının adını bağımsız değişkenden sonra veya önce belirtebilirsiniz.
Sheets("Sheet1").Copy Before:=Workbooks("Book1.xlsx").Sheets(1)
Yukarıdaki kod, Sayfa1’i etkin çalışma kitabından kopyalar ve onu zaten açık olan Kitap1.xlsx’in ilk sayfasının öncesine ekler.
Ve eğer onu taşımak istersen.
Sheets("Sheet1").Move Before:=Workbooks("Book1.xlsx").Sheets(1)
Bir sayfayı kapalı bir çalışma kitabına kopyalama
Bir sayfayı kapalı bir çalışma kitabına kopyalamanın bir yolu vardır ve onu açmanıza gerek yoktur. Aşağıdaki koda bakın.
Sub vba_copy_sheet() Dim mybook As Workbook Application.ScreenUpdating = False Set mybook = _ Workbooks.Open _ ("C:UsersDellDesktopsamplefile.xlsx") Workbooks("Book1.xlsx").Sheets("Sheet2").Copy Before:=mybook.Sheets(1) mybook.Close SaveChanges:=True Application.ScreenUpdating = True End Sub
Bu kodda myBook değişkeniniz ve ona atanmış bir çalışma kitabınız var. Kodun görevi arka uçta gerçekleştirebilmesi için ekran güncellemeyi devre dışı bıraktık.
Başka bir çalışma kitabından bir sayfayı açmadan kopyalama
Aynı şekilde kapalı bir çalışma kitabından bir sayfayı kopyalayıp taşıyabilirsiniz. Aşağıdaki koda bakın.
Sub vba_copy_sheet() Dim mybook As Workbook Application.ScreenUpdating = False Set mybook = _ Workbooks.Open _ ("C:UsersDellDesktopsamplefile.xlsx") mybook.Sheets("mySheet").Copy Before:=Workbooks("Book1.xlsx").Sheets(1) mybook.Close SaveChanges:=True Application.ScreenUpdating = True End Sub